回答

收藏

Dapper.SimpleCRUD插入/更新/获取失败并显示消息``实体必须至少具有一个[Ke

技术问答 技术问答 111 人阅读 | 0 人回复 | 2023-09-12

我在达珀(Dapper)刚出生CRUD操作与Dapper和Dapper.SimpleCRUD lib合并。这是示例代码…
, E1 {$ n# ^/ J9 P5 Y我的数据模型看起来像1 A1 F% r- \! }' u
Class Product{  public string prodId {get;set;}  public string prodName {get;set;}  public string Location {get;set;}}Dapper实施-插入" x' b# ]) B3 ]
public void Insert(Product item){    using(var con = GetConnection()con.Insert(item);   由于Db中的ProdId是身份列,所以它失败了。它是如何表现出来的?ProdId是DB中间的标志列?
; |! y0 x- r/ {$ E( NDapper实施-获取
, @9 {0 t: R" l  y" }! X* Bpublic IEnumerable GetAll()()(()()()()(                      )IEnumerable item = null;        using (var con = GetConnection())                                          item = con.GetList();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return item;}它给出了一个例外:$ ?, T4 [  M/ h1 |
实体必须至少有一个[Key]属性”!1 m; [( ]- f8 R. }$ m" H4 b( h# I6 G
                                                                + N3 O6 Q( d; g& L% H
    解决方案:                                                               
! G- L9 U( N' I- o                                                                这种情况发生的原因是你使用它Dapper扩展程序已经实现InsertCRUD扩展方法。理想情况下,可以使用简单的方法来实现$ T- }8 L; G+ U% Y* Q7 y: I# {, ^
con.Execute8 {: f5 v+ e: J/ I5 a) x
在Dapper然而,由于您想通过扩展名自动传递一个对象并创建一个插入查询,您需要帮助它理解它。它是给定产品实体的主键。因此,以下修改将有助于:: y% S  b5 p7 g4 p
[Key]public string prodId {get;set;}其中Key属性应在中Dapper Extension或中实现Component Model。  {0 ?: i4 r. j2 m  m
或者,你可以重命名prodId为Id,这将自动使其成为密钥。检查以下链接,您可以为实体创建一个单独的映射器来定义密钥,无论您使用哪种情况
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则