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

use*_*540 6 c# sql dapper dapper-extensions

我是Dapper的新生儿.尝试将CRUD操作与Dapper和Dapper.SimpleCRUD lib结合使用.以下是示例代码...
我的数据模型看起来像

Class Product
{
  public string prodId {get;set;}
  public string prodName {get;set;}
  public string Location {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

Dapper实现 - 插入

public void Insert(Product item)
{
    using(var con = GetConnection())
    {
      con.Insert(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

由于Db中的ProdId是一个标识列,它失败了.它如何表明ProdId是DB中的标识列?

精巧的实施 - 获取

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

它给出了一个例外:

"实体必须至少有一个[Key]属性"!

Mri*_*boj 11

这是因为您正在使用Dapper扩展,它已实现InsertCRUD扩展方法.理想情况下,这可以通过简单实现

con.Execute 在Dapper中,但由于您希望传递一个对象并通过扩展自动创建插入查询,您需要帮助它理解,这是给定产品实体的主键,在修改之后应该有所帮助:

[Key]
public string prodId {get;set;}
Run Code Online (Sandbox Code Playgroud)

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

或者,您可以重命名prodIdId,这将自动使其成为关键.还要检查以下链接,您可以在其中为实体创建单独的映射器,从而定义密钥,无论您的情况如何