Dapper擴充套件通過實體類直接insert
阿新 • • 發佈:2018-12-16
最近需要將一些業務資料同步到另一個庫中,於是想到了dapper的擴充套件,用到了它的批量插入,特地記錄一下基礎用法。
1、新增Dapper和Dapper.Contrib
2、連結
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“DbConn”].ConnectionString);
3、查詢
string query = "SELECT * FROM User WHERE name = @name";
var userList = conn.Query<User>(query, new {name = "zhangsan"});
// 也可以不標註型別,直接查出object物件
var userList = conn.Query(query, new {name = "zhangsan"});
ps:這裡注意一下in的用法
string query = "SELECT * FROM User WHERE id in @ids";
var userList = conn.Query<User>(query, new {id = new int[]{1,2,3}});
// 比如現有一個有createUserID屬性的list為orderList,要查詢user
var ids = from o in orderList select o.createUserID;
var orderUserList = conn.Query<User>(query, new {id = ids});
4、插入
string query = "INSERT INTO User(Name) VALUES(@name)";
conn.Execute(query, new {name = "zhangsan"});
// user是帶有name屬性的實體。
conn.Execute(query, user);
可以利用擴充套件Dapper.Contrib.Extensions直接把實體插入到資料庫,不用寫插入sql語句。
// user實體類和User表如果一致,可以直接這麼用。
conn.Insert(user);
// 比如userList 是user表對應的list,那麼可以直接批量插入
conn.Insert(userList);
注意:如果主鍵欄位不為ID要在主鍵欄位上標註[Key]屬性,表名同理,如果表名和實體類名稱不一樣,在實體class上標註表名,如:[Table(“MySys.User”)]