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

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

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

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

精巧的实施 – 获取

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

它给出了一个例外:

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

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

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

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

其中Key属性应在Dapper ExtensionComponent Model

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

连接到SQL Server 2016时,我忘记将主键附加到表的Id列时,Dapper.Contrib和Dapper.SimpleCRUD都出现此错误。

主键添加到表中,项目重建和发布以清除缓存,所有这些都适用于[Key]和[ExplicitKey](后者在DapperContrib中)。