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

2023-12-27

我是 Dapper 的新生。尝试将 CRUD 操作与 Dapper 和 Dapper.SimpleCRUD 库合并。这是示例代码...
我的数据模型看起来像

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

简洁的实施 - 插入

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

由于数据库中的 ProdId 是一个身份列,因此失败。它如何表明 ProdId 是数据库中的标识列?

简洁的实施 - 获取

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

它给出了一个例外:

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


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

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

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

其中 Key 属性应在以下位置实现Dapper Extension or the Component Model.

或者您可以重命名prodId to Id,这将自动使其成为密钥。另请检查以下内容link http://rnsx.co.uk/an-introduction-to-dapper-extensions/,您可以在其中为实体创建一个单独的映射器,从而定义键,无论您的情况如何

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐