提问者:小点点

当表的列数多于类时使用Dapper


在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库忽略类属性,但不知道反过来。

我怎么能这么做呢?

谢了。


共1个答案

匿名用户

必须具体枚举列,如:

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);