Dapper.SimpleCRUD 插入/更新/获取失败并显示消息 "Entity must have at least one [Key] property"
Dapper.SimpleCRUD Insert / Update / Get fails with message "Entity must have at least one [Key] property"
我是 Dapper 的新生。尝试将 CRUD 操作与 Dapper 和 Dapper.SimpleCRUD 库结合起来。这是示例代码...
我的数据模型看起来像
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 是数据库中的标识列?
Dapper 实施 - 获取
public IEnumerable<Product> GetAll()
{
IEnumerable<Product> item = null;
using (var con = GetConnection())
{
item = con.GetList<Product>();
}
return item;
}
它给出了一个例外:
"Entity must have at least one [Key] property"!
发生这种情况是因为您使用的是 Dapper 扩展,它已实现 Insert
CRUD 扩展方法。理想情况下,这可以使用 simple
来实现
con.Execute
在 Dapper 中,但是由于你想传递一个对象并通过扩展自动创建一个插入查询,你需要帮助它理解,这是给定产品实体的主键,以下修改将有所帮助:
[Key]
public string prodId {get;set;}
其中 Key 属性应在 Dapper Extension
或 Component Model
中实现。
或者您可以将 prodId
重命名为 Id
,这将自动使其成为密钥。还要检查以下 link,您可以在其中为实体创建一个单独的映射器,从而定义密钥,无论您的情况如何
连接到 SQL Server 2016,当我忘记将主键附加到 [=17= 的 Id 列时,Dapper.Contrib 和 Dapper.SimpleCRUD 都出现了这个错误].
主键添加到 table,项目重建并发布以清除缓存,[Key] 和 [ExplicitKey](后者在 DapperContrib 中)都很好。
我是 Dapper 的新生。尝试将 CRUD 操作与 Dapper 和 Dapper.SimpleCRUD 库结合起来。这是示例代码...
我的数据模型看起来像
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 是数据库中的标识列?
Dapper 实施 - 获取
public IEnumerable<Product> GetAll()
{
IEnumerable<Product> item = null;
using (var con = GetConnection())
{
item = con.GetList<Product>();
}
return item;
}
它给出了一个例外:
"Entity must have at least one [Key] property"!
发生这种情况是因为您使用的是 Dapper 扩展,它已实现 Insert
CRUD 扩展方法。理想情况下,这可以使用 simple
con.Execute
在 Dapper 中,但是由于你想传递一个对象并通过扩展自动创建一个插入查询,你需要帮助它理解,这是给定产品实体的主键,以下修改将有所帮助:
[Key]
public string prodId {get;set;}
其中 Key 属性应在 Dapper Extension
或 Component Model
中实现。
或者您可以将 prodId
重命名为 Id
,这将自动使其成为密钥。还要检查以下 link,您可以在其中为实体创建一个单独的映射器,从而定义密钥,无论您的情况如何
连接到 SQL Server 2016,当我忘记将主键附加到 [=17= 的 Id 列时,Dapper.Contrib 和 Dapper.SimpleCRUD 都出现了这个错误].
主键添加到 table,项目重建并发布以清除缓存,[Key] 和 [ExplicitKey](后者在 DapperContrib 中)都很好。