一尘不染

Dapper.SimpleCRUD插入/更新/获取失败并显示消息``实体必须至少具有一个[Key]属性''。

sql

我在达珀(Dapper)刚出生。尝试将CRUD操作与Dapper和Dapper.SimpleCRUD lib合并。这是示例代码…
我的数据模型看起来像

Class Product
{
  public string prodId {get;set;}
  public string prodName {get;set;}
  public string Location {get;set;}
}

Dapper实施-插入

public void Insert(Product item)
{
    using(var con = GetConnection())
    {
      con.Insert(item);
    }
}

由于Db中的ProdId是“身份”列,因此它失败。它如何表明ProdId是DB中的标识列?

Dapper实施-获取

public IEnumerable<Product> GetAll()
{
        IEnumerable<Product> item = null;
        using (var con = GetConnection())
        {
            item = con.GetList<Product>();
        }
        return item;
}

它给出了一个例外:

“实体必须至少具有一个[Key]属性”!


阅读 254

收藏
2021-05-23

共1个答案

一尘不染

之所以发生这种情况,是因为您使用的是Dapper扩展程序,该程序已实现了InsertCRUD扩展方法。理想情况下,可以使用简单的方法来实现

con.Execute
在Dapper中,但是由于您要传递一个对象并通过扩展名自动创建一个插入查询,因此需要帮助它理解它,它是给定产品实体的主键,因此进行以下修改将有所帮助:

[Key]
public string prodId {get;set;}

其中Key属性应在中Dapper Extension或中实现Component Model

或者,您可以重命名prodIdId,这将自动使其成为密钥。还要检查以下链接,在这里您可以为实体创建一个单独的映射器,从而定义密钥,无论您使用哪种情况

2021-05-23