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支持集合的插入,集合提交是一句直接的插入命令,因此速度會快不少。