1. 程式人生 > >Dapper擴充套件通過實體類直接insert

Dapper擴充套件通過實體類直接insert

        最近需要將一些業務資料同步到另一個庫中,於是想到了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”)]