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”)]

你可能感兴趣的:(开发技术)