C# 如何使用Dapper.Contrib通过唯一键获取实体?

C# 如何使用Dapper.Contrib通过唯一键获取实体?,c#,dapper,dapper-contrib,C#,Dapper,Dapper Contrib,我有一个目标,假设 public class User { [Key] int TheId { get; set; } string Name { get; set; } int Age { get; set; } } TheId是我的自动递增列,Name是我的唯一键。保存用户时,我希望通过以下方式检查其存在性: var user= connection.Get<User>("John"); 这一次,dapper希望ID由我填写,而不是让数据库自动

我有一个目标,假设

public class User
{
    [Key]
    int TheId { get; set; }
    string Name { get; set; }
    int Age { get; set; }
}
TheId
是我的自动递增列,
Name
是我的唯一键。保存用户时,我希望通过以下方式检查其存在性:

var user= connection.Get<User>("John");
这一次,dapper希望ID由我填写,而不是让数据库自动递增


所以,我想知道是否有一种优雅的方法来实现在db上搜索时标记一些要考虑的属性。我不想按
Guid
搜索,而是按唯一键进行搜索。

如果我理解正确,您愿意按键以外的属性进行搜索

dapper contrib不支持这一点。对于
Get
,应仅使用键字段。即使其他属性是唯一键,这也是不可能的。您正在进行的任何其他调整(在
名称
属性上设置
[keyplicit]
)都不是正确的处理方法;正如你所看到的,它会产生其他问题

对于具有其他属性的
Get
,更好的选择是直接使用Dapper绕过Contrib。

相关:
connection.Insert(myUser);