我有一个对象,假设
public class User
{
[Key]
int TheId { get; set; }
string Name { get; set; }
int Age { get; set; }
}
TheId
是我的自动递增列和 Name
是我的唯一密钥。当保存一个用户时,我想通过以下方式检查它的存在。
var user= connection.Get<User>("John");
但是,由于我的Key不是 Name
不过 TheId
我不能这样做。如果我设置 Name
作为 [KeyExplicit]
那个时候,我想通过保存我的用户。
connection.Insert(myUser);
这一次,Dapper期待 TheId
属性由我填写,而不是让数据库自动增加。
所以,我想知道是否有一种优雅的方法来实现在db上搜索时,将一些属性标记为dapper要考虑的属性。我不想用 Guid
但是唯一的键。
如果我理解正确,你愿意 Get
的属性。
dapper-contrib不支持这个。对于 Get
只能使用键字段。即使其他属性是唯一的键,这也是不可能的。您正在做的任何其他调整(设置 [KeyExplicit]
关于 Name
属性)不是处理这个问题的正确方法;正如你所看到的,它会产生其他问题。
如你所见,它会产生其他问题。Get
与其他属性,更好的选择是直接绕过Contrib使用Dapper。