我在达珀(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]属性”!
之所以发生这种情况,是因为您使用的是Dapper扩展程序,该程序已实现了InsertCRUD扩展方法。理想情况下,可以使用简单的方法来实现
Insert
con.Execute 在Dapper中,但是由于您要传递一个对象并通过扩展名自动创建一个插入查询,因此需要帮助它理解它,它是给定产品实体的主键,因此进行以下修改将有所帮助:
con.Execute
[Key] public string prodId {get;set;}
其中Key属性应在中Dapper Extension或中实现Component Model。
Dapper Extension
Component Model
或者,您可以重命名prodId为Id,这将自动使其成为密钥。还要检查以下链接,在这里您可以为实体创建一个单独的映射器,从而定义密钥,无论您使用哪种情况
prodId
Id