Dapper.SimpleCRUD插入/更新/获取失败并显示消息``实体必须至少具有一个[Ke
技术问答
124 人阅读
|
0 人回复
|
2023-09-12
|
我在达珀(Dapper)刚出生CRUD操作与Dapper和Dapper.SimpleCRUD lib合并。这是示例代码…; R/ o7 [% d7 h+ b
我的数据模型看起来像
# d$ ^( S# U% w. T$ l4 l" g& bClass Product{ public string prodId {get;set;} public string prodName {get;set;} public string Location {get;set;}}Dapper实施-插入
, O+ ? p+ _1 b! T% T6 ?" Cpublic void Insert(Product item){ using(var con = GetConnection()con.Insert(item); 由于Db中的ProdId是身份列,所以它失败了。它是如何表现出来的?ProdId是DB中间的标志列?: i, E4 b# _/ a" g" e' J
Dapper实施-获取
+ T) h; L) m X; p; y: a& B2 Qpublic IEnumerable GetAll()()(()()()()( )IEnumerable item = null; using (var con = GetConnection()) item = con.GetList();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return item;}它给出了一个例外:' Q; E# ^) }: L4 a0 H
实体必须至少有一个[Key]属性”!- |1 n/ O7 z. U I0 r
! t( @5 r/ _+ Q/ y' f: w$ w
解决方案:
" O3 z2 t' `) ^" \ 这种情况发生的原因是你使用它Dapper扩展程序已经实现InsertCRUD扩展方法。理想情况下,可以使用简单的方法来实现
9 r% u2 S( H8 h3 |con.Execute
0 E! O4 M- U6 z2 G" b( H在Dapper然而,由于您想通过扩展名自动传递一个对象并创建一个插入查询,您需要帮助它理解它。它是给定产品实体的主键。因此,以下修改将有助于:6 W5 N5 f! [ F" @! Q; ~$ _
[Key]public string prodId {get;set;}其中Key属性应在中Dapper Extension或中实现Component Model。" A# y' q- n* g/ n9 I2 D
或者,你可以重命名prodId为Id,这将自动使其成为密钥。检查以下链接,您可以为实体创建一个单独的映射器来定义密钥,无论您使用哪种情况 |
|
|
|
|
|