我們都知道ORM全稱叫做Object Relationship Mapper,也就是可以用object來map我們的db,而且市面上的orm框架有很多,其中有一個框架
叫做dapper,而且被稱為the king of ORM。
一:為什么選擇Dapper
1. 性能優越:
其實在各大網站上,我們大概都會看到這樣的一個對比效果圖,在超過500次poco serialization的過程中所表現的性能,我們發現dapper是第二名,
當然第一名誰也無法超越,越底層的當然久越快,同時也就越麻煩。
2.實測代碼
創造測試數據
CREATE TABLE [dbo].[Users]( [UserID] [int] IDENTITY(1,1) NOT NULL, [UserName] [varchar](50) NULL, [Email] [varchar](100) NULL, [Address] [varchar](100) NULL, CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [UserID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
1.webconfig配置數據庫連接串
2.貼代碼
public class DapperController : Controller { // GET: Dapper public ActionResult Index() { string connetionString = ConfigurationManager.ConnectionStrings["conn"].ToString(); IDbConnection connection = new SqlConnection(connetionString); //var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",new { UserName = "李四", Email = "380234234@qq.com", Address = "上海" }); //批量插入 //InsertBulk(connection); //批量修改 //UpdateBulk(connection); //查詢 //Query(connection); //刪除 //Del(connection); return View(); } /// <summary> /// 批量插入 /// </summary> public void InsertBulk(IDbConnection connection) { var usersList = Enumerable.Range(0, 10).Select(i => new Users() { Email = i + "qq.com", Address = "測試地址", UserName = i + "測試" }); var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)", usersList); } /// <summary> /// 批量修改 /// </summary> public void UpdateBulk(IDbConnection connection) { List<Users> usersList = new List<Users>(); for (int i = 1; i < 11; i++) { Users users = new Users(); users.UserID = i; users.UserName = i + "張三"; users.Email = i+"@163.com"; users.Address = i + "張三的住址"; usersList.Add(users); } var result = connection.Execute("update Users set UserName=@UserName,Email=@Email,Address=@Address where UserID=@UserID", usersList); } /// <summary> /// 查詢 /// </summary> /// <param name="connection"></param> public void Query(IDbConnection connection) { int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 }; var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }); } /// <summary> /// 批量進行修改 /// </summary> /// <param name="connection"></param> public void Del(IDbConnection connection) { int[] myArr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var result = connection.Execute("delete from Users where UserID IN @UserID", new { UserID = myArr }); } } public class Users { public int UserID { get; set; } public string Email { get; set; } public string Address { get; set; } public string UserName { get; set; } }
/// <summary> /// 查詢 /// </summary> /// <param name="connection"></param> public void Query(IDbConnection connection) { int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 }; var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }); connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).ToList(); connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).SingleOrDefault(); }
其他待補充