한 걸음 한 걸음 ASP.NET MVC 5 프로그램 만 들 기[Repository+Autofac+Automapper+SqlSugar](2)
40454 단어 asp.net-mvcasp.netdotnetc#
이 시리즈 의 첫 번 째 편 인 에서 저 는 공백 해결 방안 을 구축 하고 이 해결 방안 에서 디 렉 터 리 를 만 들 고 대응 하 는 프로젝트 를 소개 합 니 다.이 편 은 프로젝트 에서 Nuget 을 사용 하여.NET 에 대응 하 는 MySql.Data 패 키 지 를 도입 하고 전통 적 인 Ado.NET 을 사용 하여 MySQL 데이터 베 이 스 를 연결 하여 간단 한 조 회 를 실현 하고 데 이 터 를 범용 대상 으로 변환 하 는 작업 을 여러분 과 함께 배 울 것 입 니 다.
본 편 지식 요점
using System;
namespace TsBlog.Domain.Entities
{
///
///
///
public class Post
{
///
/// ID
///
public int Id { get; set; }
///
///
///
public string Title { get; set; }
///
///
///
public string Content { get; set; }
///
/// ID
///
public string AuthorId { get; set; }
///
///
///
public string AuthorName { get; set; }
///
///
///
public DateTime CreatedAt { get; set; }
///
///
///
public DateTime PublishedAt { get; set; }
///
///
///
public bool IsDeleted { get; set; }
///
///
///
public bool AllowShow { get; set; }
///
///
///
public int ViewCount { get; set; }
}
}
그림:
using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace TsBlog.Repositories
{
///
///
///
public sealed class MySqlHelper
{
// (web.config ), connectionString .
public static string connectionString = " ";
private MySqlHelper()
{
}
#region
///
///
///
///
///
///
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
///
///
///
///
///
public static bool Exists(string strSql)
{
object obj = GetSingle(strSql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
///
/// ( MySqlParameter)
///
///
///
///
public static bool Exists(string strSql, params MySqlParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region SQL
///
/// SQL ,
///
/// SQL
///
public static int ExecuteSql(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
connection.Close();
throw e;
}
}
}
}
public static int ExecuteSqlByTime(string SQLString, int Times)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.CommandTimeout = Times;
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
connection.Close();
throw e;
}
}
}
}
///
/// SQL , 。
///
/// SQL
public static int ExecuteSqlTran(List SQLStringList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
MySqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
}
}
tx.Commit();
return count;
}
catch
{
tx.Rollback();
return 0;
}
}
}
///
/// SQL 。
///
/// SQL
/// , , ,
///
public static int ExecuteSql(string SQLString, string content)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand cmd = new MySqlCommand(SQLString, connection);
MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
///
/// SQL 。
///
/// SQL
/// , , ,
///
public static object ExecuteSqlGet(string SQLString, string content)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand cmd = new MySqlCommand(SQLString, connection);
MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
///
/// ( )
///
/// SQL
/// , image
///
public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand cmd = new MySqlCommand(strSQL, connection);
MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@fs", SqlDbType.Image);
myParameter.Value = fs;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
///
/// , (object)。
///
///
/// (object)
public static object GetSingle(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
connection.Close();
throw e;
}
}
}
}
public static object GetSingle(string SQLString, int Times)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.CommandTimeout = Times;
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
connection.Close();
throw e;
}
}
}
}
///
/// , MySqlDataReader ( : , MySqlDataReader Close )
///
///
/// MySqlDataReader
public static MySqlDataReader ExecuteReader(string strSQL)
{
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand(strSQL, connection);
try
{
connection.Open();
MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
}
///
/// , DataSet
///
///
/// DataSet
public static DataSet Query(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
public static DataSet Query(string SQLString, int Times)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
command.SelectCommand.CommandTimeout = Times;
command.Fill(ds, "ds");
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
#endregion
#region SQL
///
/// SQL ,
///
/// SQL
///
public static int ExecuteSql(string SQLString, params MySqlParameter[] cmdParms)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
}
}
}
///
/// SQL , 。
///
/// SQL (key sql ,value MySqlParameter[])
public static void ExecuteSqlTran(Hashtable SQLStringList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlTransaction trans = conn.BeginTransaction())
{
MySqlCommand cmd = new MySqlCommand();
try
{
//
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText = myDE.Key.ToString();
MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Value;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
///
/// SQL , 。
///
/// SQL (key sql ,value MySqlParameter[])
public static int ExecuteSqlTran(System.Collections.Generic.List cmdList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlTransaction trans = conn.BeginTransaction())
{
MySqlCommand cmd = new MySqlCommand();
try
{
int count = 0;
//
foreach (CommandInfo myDE in cmdList)
{
string cmdText = myDE.CommandText;
MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
{
if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
{
trans.Rollback();
return 0;
}
object obj = cmd.ExecuteScalar();
bool isHave = false;
if (obj == null && obj == DBNull.Value)
{
isHave = false;
}
isHave = Convert.ToInt32(obj) > 0;
if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
{
trans.Rollback();
return 0;
}
if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
{
trans.Rollback();
return 0;
}
continue;
}
int val = cmd.ExecuteNonQuery();
count += val;
if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
{
trans.Rollback();
return 0;
}
cmd.Parameters.Clear();
}
trans.Commit();
return count;
}
catch
{
trans.Rollback();
throw;
}
}
}
}
///
/// SQL , 。
///
/// SQL (key sql ,value MySqlParameter[])
public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List SQLStringList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlTransaction trans = conn.BeginTransaction())
{
MySqlCommand cmd = new MySqlCommand();
try
{
int indentity = 0;
//
foreach (CommandInfo myDE in SQLStringList)
{
string cmdText = myDE.CommandText;
MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
foreach (MySqlParameter q in cmdParms)
{
if (q.Direction == ParameterDirection.InputOutput)
{
q.Value = indentity;
}
}
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
foreach (MySqlParameter q in cmdParms)
{
if (q.Direction == ParameterDirection.Output)
{
indentity = Convert.ToInt32(q.Value);
}
}
cmd.Parameters.Clear();
}
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
///
/// SQL , 。
///
/// SQL (key sql ,value MySqlParameter[])
public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlTransaction trans = conn.BeginTransaction())
{
MySqlCommand cmd = new MySqlCommand();
try
{
int indentity = 0;
//
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText = myDE.Key.ToString();
MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Value;
foreach (MySqlParameter q in cmdParms)
{
if (q.Direction == ParameterDirection.InputOutput)
{
q.Value = indentity;
}
}
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
foreach (MySqlParameter q in cmdParms)
{
if (q.Direction == ParameterDirection.Output)
{
indentity = Convert.ToInt32(q.Value);
}
}
cmd.Parameters.Clear();
}
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
///
/// , (object)。
///
///
/// (object)
public static object GetSingle(string SQLString, params MySqlParameter[] cmdParms)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
}
}
}
///
/// , MySqlDataReader ( : , MySqlDataReader Close )
///
///
/// MySqlDataReader
public static MySqlDataReader ExecuteReader(string SQLString, params MySqlParameter[] cmdParms)
{
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand();
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw e;
}
// finally
// {
// cmd.Dispose();
// connection.Close();
// }
}
///
/// , DataSet
///
///
/// DataSet
public static DataSet Query(string SQLString, params MySqlParameter[] cmdParms)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (MySqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
#endregion
}
public enum EffentNextType
{
///
///
///
None,
///
/// "select count(1) from .." , ,
///
WhenHaveContine,
///
/// "select count(1) from .." , ,
///
WhenNoHaveContine,
///
/// 0,
///
ExcuteEffectRows,
///
/// - "select count(1) from .." , ,
///
SolicitationEvent
}
public class CommandInfo
{
public object ShareObject = null;
public object OriginalData = null;
event EventHandler _solicitationEvent;
public event EventHandler SolicitationEvent
{
add
{
_solicitationEvent += value;
}
remove
{
_solicitationEvent -= value;
}
}
public void OnSolicitationEvent()
{
if (_solicitationEvent != null)
{
_solicitationEvent(this, new EventArgs());
}
}
public string CommandText;
public System.Data.Common.DbParameter[] Parameters;
public EffentNextType EffentNextType = EffentNextType.None;
public CommandInfo()
{
}
public CommandInfo(string sqlText, SqlParameter[] para)
{
this.CommandText = sqlText;
this.Parameters = para;
}
public CommandInfo(string sqlText, SqlParameter[] para, EffentNextType type)
{
this.CommandText = sqlText;
this.Parameters = para;
this.EffentNextType = type;
}
}
}
코드 를 추가 하면 Visual Studio 편집기 에서 다음 그림 과 같은 오 류 를 알려 줍 니 다.그림:
프로젝트 에 MySql.Data 라 는 패키지 가 도입 되 지 않 았 음 을 설명 합 니 다.이 프로젝트 의 인용[References]에서 오른쪽 단 추 를 누 르 고[Manage Nuget Packages]를 선택 하여 프로젝트 의 Nuget 패키지 관리 인터페이스 에 들 어가 MySql.Data 를 검색 하고 찾 은 결과 에서 MySql.Data 를 선택 합 니 다.동시에 버 전 을 선택 하 십시오(이 시 리 즈 는 MySql.Data 6.9.9 를 사용 합 니 다)."Install"을 누 르 면 설치 합 니 다.완 료 된 후에 저 희 는 MySqlHelper.cs 파일 로 돌아 가 MySql.Data.MySqlClient 의 네 임 스페이스 를 도입 합 니 다.
using MySql.Data.MySqlClient;
이로써 MySqlHelper.cs 라 는 MySql 도움말 라 이브 러 리 가 만 들 어 졌 습 니 다.그러나 본 논문 의 후속 적 인 데이터 변환 을 위해 저 희 는 이 프로젝트 에서 새로운 클래스 파일 을 만 듭 니 다.이름 은 DataConverter.cs 입 니 다.이 를 정적 클래스 로 쓰 고 DataTable 에서 일반 대상 으로 전환 하 는 정적 확장 방법 을 만 듭 니 다.다음 코드 를 작성 합 니 다.
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
namespace TsBlog.Repositories
{
public static class DataConverter
{
public static List ToList(this DataTable table) where T : class, new()
{
var obj = new T();
var tType = obj.GetType();
var list = new List();
//Define what attributes to be read from the class
const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
//Read Attribute Names and Types
var objFieldNames = typeof(T).GetProperties(flags)
.Select(item => new
{
item.Name,
Type = Nullable.GetUnderlyingType(item.PropertyType) ?? item.PropertyType
}).ToList();
//Read Datatable column names and types
var dtlFieldNames = table.Columns.Cast()
.Select(item => new
{
Name = item.ColumnName,
Type = item.DataType
}).ToList();
foreach (var row in table.Rows.Cast())
{
foreach (var prop in objFieldNames)
{
if (!dtlFieldNames.Any(x => x.Name.Equals(prop.Name, StringComparison.CurrentCultureIgnoreCase)))
{
continue;
}
var propertyInfo = tType.GetProperty(prop.Name);
var rowValue = row[prop.Name];
if (propertyInfo == null) continue;
var t = Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType;
var safeValue = (rowValue == null || DBNull.Value.Equals(rowValue)) ? null : Convert.ChangeType(rowValue, t);
propertyInfo.SetValue(obj, safeValue, null);
}
list.Add(obj);
}
return list;
}
}
}
여기 서 우리 의 준비 작업 이 거의 끝나 지 않 았 습 니 다.다음 에 데 이 터 를 만들어 서 관련 작업 을 읽 습 니 다.
저장 소 클래스 만 들 기
프로젝트[TsBlog.Repositories]에 새로운 종류의 파일 을 추가 합 니 다.이름 은 PostRepository.cs 입 니 다.우 리 는 이 파일 에서 박문 에 관 한 데이터 베 이 스 를 읽 고 쓰 는 등 작업 을 합 니 다.(주:처음에 우 리 는 Ado.net 방식 으로 데이터 베 이 스 를 작 동 했 고 ORM 은 후속 문장 에서 프로젝트 의 재 구성 과 최적화 를 점차적으로 참조 하고 완성 할 것 입 니 다)코드 는 다음 과 같 습 니 다.
PostRepository.cs
using MySql.Data.MySqlClient;
using System.Collections.Generic;
using System.Linq;
using TsBlog.Domain.Entities;
namespace TsBlog.Repositories
{
///
/// POST
///
public class PostRepository
{
///
/// ID
///
/// Post ID
///
public Post FindById(int id)
{
var ds = MySqlHelper.Query("SELECT * FROM tb_post WHERE Id=@Id", new MySqlParameter("@Id",id));
var entity = ds.Tables[0].ToList().FirstOrDefault();
return entity;
}
///
///
///
///
public List FindAll()
{
var ds = MySqlHelper.Query("SELECT * FROM tb_post");
return ds.Tables[0].ToList();
}
}
}
완벽 한 보기 층
컨트롤 러 수정
우선,우 리 는 프로젝트[TsBlog.Frontend]에 들 어가 컨트롤 러[HomeController.cs]를 열 고 데이터 읽 기 기능 을 테스트 하기 위해 Action 을 추가 합 니 다.이름 은 Post,수 정 된 HomeController.cs 파일 코드 는 다음 과 같 습 니 다.
HomeController.cs
using System.Web.Mvc;
using TsBlog.Repositories;
namespace TsBlog.Frontend.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Post()
{
var postRepository = new PostRepository();
var post = postRepository.FindById(1);
return View(post);
}
}
}
메모:TsBlog.domain 과 TsBlog.Repositories 두 프로그램 집합 참조
보기 만 들 기
보기 에 대응 하 는 보기 Post.cshtml 파일 을 추가 합 니 다.
@model TsBlog.Domain.Entities.Post
@{
Layout = null;
}
Post find by id test
Post id:@Model.Id
Post Title:@Model.Title
데이터베이스 연결
웹.coinfig 파일 에 대응 하 는 데이터베이스 연결 문자열 을 추가 합 니 다:
그림:
프로젝트[TsBlog.Repositories]의 MySqlHelper.cs 파일 의 데이터베이스 연결 설정 수정:
public static string ConnectionString = ConfigurationManager.ConnectionStrings["TsBlogMySQLDb"].ConnectionString;
데이터베이스 와 테이블 만 들 기
MySql 관리 도 구 를 열 고 다음 Sql 스 크 립 트 를 실행 하고 데이터베이스,데이터 시트 를 만 들 고 테스트 데 이 터 를 가 져 옵 니 다.
CREATE DATABASE IF NOT EXISTS `tsblog`
USE `tsblog`;
/*Table structure for table `tb_post` */
DROP TABLE IF EXISTS `tb_post`;
CREATE TABLE `tb_post` (
`Id` int(12) NOT NULL AUTO_INCREMENT,
`Title` varchar(255) DEFAULT '' COMMENT ' ',
`Content` text COMMENT ' ',
`AuthorId` int(6) DEFAULT '0' COMMENT ' ID',
`AuthorName` varchar(50) DEFAULT '' COMMENT ' ',
`CreatedAt` datetime DEFAULT NULL COMMENT ' ',
`PublishedAt` datetime DEFAULT NULL COMMENT ' ',
`IsDeleted` bit(1) DEFAULT b'0' COMMENT ' [0: ,1: ], :0',
`AllowShow` bit(1) DEFAULT b'1' COMMENT ' [0: ,1: ], :1',
`ViewCount` int(10) DEFAULT '0' COMMENT ' ',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*Data for the table `tb_post` */
insert into `tb_post`(`Id`,`Title`,`Content`,`AuthorId`,`AuthorName`,`CreatedAt`,`PublishedAt`,`IsDeleted`,`AllowShow`,`ViewCount`) values
(1,'Title','Clean content',0,'',NULL,NULL,'\0','1',0);
여기까지 설정 이 완 료 된 것 같 습 니 다.프로젝트[TsBlog.Frontend]를 시작 항목 으로 설정 하고 F5 를 누 르 면 다음 과 같은 오 류 를 얻 을 수 있 습 니 다.
jquery 를 포함 하여 이전 편 에서 불필요 한 프로그램 패 키 지 를 제거 하 였 으 나,ASP.NET MVC 5 는 자동 으로 압축 기능 을 열 어 주 었 기 때문에 오 류 를 보고 하 였 습 니 다.먼저 압축 기능 을 잠시 끄 고 Global.sax 를 엽 니 다.우리 가 본 파일 코드 는:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace TsBlog.Frontend
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
압축 설정 문 설명:
using System.Web.Mvc;
using System.Web.Routing;
namespace TsBlog.Frontend
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
//BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
자,F5 실행 프로그램 을 누 르 고 주 소 를 엽 니 다.http://localhost:54739/home/post,그림 과 같은 인터페이스 를 얻 으 면:
그럼 Ado.net 기반 MySql 데이터 연결 이 성 공 했 습 니 다.
이 글 을 단숨에 쓰 니 정말 길 구나.옆 에 있 는 스크롤 바 가 가 늘 어서 작은 허리 가 되 었 구나.하하...................................................
만약 당신 이 본문 을 좋아한다 면,작가 가 후속 적 으로 더 잘 쓸 수 있 도록 좋아요 를 눌 러 주세요!!문제 가 있 으 면 댓 글 피드백 을 환영 합 니 다.
본 고 는 코드 친구 망 에 동시에 발표 되 었 다.(2)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Log4Net 사용 설명 (계속)예 를 들 어 log4net 을 이용 하여 로그 정 보 를 파일, 콘 솔, Windows 이벤트 로그 와 데이터 베이스 (MS SQL Server, Access, Oracle 9i, Oracle 8i, DB2, SQ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.