在Dapper中,如何在插入过程中忽略表列?
我有一个具有属性a,B,C的类,并且有一个这些属性的列表。
假定类似于
class DTO
{
string A;
string B;
string C;
}
列表的类型是
List myList = new List<DTO>()
所以使用这样的sql行将列表批量插入到我的表中
sql="INSERT INTO TABLE VALUES (@A, @B, @C)";
conn.Execute(sql, myList)
它工作良好,当我的表也有列A,B,C时,它会插入我的所有数据。
但是当我的表有更多的列时,例如A,B,C,D,我会得到错误:列名或提供的值的数目与表定义不匹配
我知道如何使用Dapper Contrib库忽略类属性,但不知道反过来。
我怎么能这么做呢?
谢了。
必须具体枚举列,如:
sql="INSERT INTO TABLE (column1name, column2name, column3name) VALUES (@A, @B, @C)";
或者,如果DTO包含主键,则可以使用以下属性装饰DTO:
[Table("TableName")]
class DTO
{
[Key]
int id;
string A;
string B;
string C;
}
并使用dapper.contrib中的insert()
。
connection.Insert(dto);