Dapper只有一个代码文件,彻底开源,你能够放在项目里的任何位置,来实现数据到对象的ORM操做,体积小速度快。 使用ORM的好处是增、删、改很快,不用本身写sql,由于这都是重复技术含量低的工做,还有就是程序中大量的从数据库中读数据而后建立model,并为model字段赋值。这些ORM均可以轻松给你搞定。ORM给咱们开发带来便利时,性能也是一个让咱们不得不考虑的问题。通常的ORM性能和直接写原生的sql比都差很多,可是Dapper性能还很错,甚至和DbHelperSQL方式性能高出不少。html
下载地址:https://github.com/StackExchange/dapper-dot-netgit
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你必定会喜欢上Dapper这款ROM。github
CREATE TABLE [Person]( [id] [int] IDENTITY(5,1) NOT NULL primary key nonclustered, [username] [nvarchar](100) NULL, [password] [nvarchar](100) NULL, [age] [int] NULL, [registerDate] [datetime] NULL, [address] [nvarchar](150) NULL )
public class Person { public int id { get; set; } public string username { get; set; } public string password { get; set; } public int age { get; set; } public DateTime registerDate { get; set; } public string address { set; get; } }
public static string ConnString = "Server=.;Database=Test1;uid=sa;pwd=sa;";
public static List<Person> GetPersonList() { using (var conn = new System.Data.SqlClient.SqlConnection(ConnString)) { conn.Open(); var a = conn.Query<Person>("select * from Person where id>@id", new { id = 2 }); conn.Close(); return a.ToList(); } }
public static void Execute() { using (var conn = new SqlConnection(ConnString)) { conn.Open(); var r=conn.Execute(@"insert Person(username, password,age,registerDate,address) values (@a, @b,@c,@d,@e)", [] { new { a = 1, b = 1, c = 1, d = DateTime.Now, e = 1 } , new { a = 2, b = 2, c = 2, d = DateTime.Now, e = 2 } , new { a = 3, b = 3, c = 3, d = DateTime.Now, e = 3 } } conn.Close(); } );
public static bool Update() { using (var conn = new SqlConnection(ConnString)) { conn.Open(); var r = conn.Execute(@"update Person set password='www.lanhuseo.com' where username=@username", new { username = 2 }); conn.Close(); return r > 0; } }
public static bool Delete() { using (var conn = new SqlConnection(ConnString)) { conn.Open(); var r = conn.Execute(@"delete from Person where id=@id", new { id = 2 }); conn.Close(); return r > 0; } }
using (var conn = new SqlConnection(ConnString)) { conn.Open(); IDbTransaction trans = conn.BeginTransaction(); int row = conn.Execute(@"update Person set password='www.lanhuseo.com' where id=@id", new { id = 3 }, trans, null, null); row += conn.Execute("delete from Person where id=@id", new { id = 5 }, trans, null, null); trans.Commit(); }
public static int InsertMultiple<T>(string sql, IEnumerable<T> entities, string connectionName = null) where T : class, new() { using (SqlConnection cnn = GetOpenConnection(connectionName)) { int records = 0; using (var trans = cnn.BeginTransaction()) { try { cnn.Execute(sql, entities, trans, 30, CommandType.Text); } catch (DataException ex) { trans.Rollback(); throw ex; } trans.Commit(); } //foreach (T entity in entities) //{ // records += cnn.Execute(sql, entity); //} return records; } }Dapper支持集合的插入,集合提交是一句直接的插入命令,因此速度会快不少。