繁体   English   中英

当表的列数超过 class 时使用 Dapper

[英]Using Dapper when table has more columns than class

在 Dapper 中,如何在插入期间忽略表列?

我有一个 class,其属性为 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、DI 得到错误:列名或提供值的数量与表定义不匹配

我知道如何使用 Dapper Contrib 库忽略 class 属性,但反之则不然。

我怎样才能做到这一点?

谢谢。

您必须具体枚举您的列,如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM