首页 > 解决方案 > 如何使用 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");

但是,由于我的 Key is not Namebut TheId,我不能这样做。如果我将Name属性设置为[KeyExplicit]我想通过以下方式保存用户的时间:

connection.Insert(myUser);

这一次,dapper 期望TheId我填充的属性,而不是让数据库自动增加。

所以,我想知道是否有一种优雅的方法可以在搜索数据库时将一些属性或属性标记为 dapper 考虑。我不想通过Guid唯一键进行搜索。

标签: c#dapperdapper-contrib

解决方案


如果我理解正确的话,你愿意Get按键以外的属性。

dapper-contrib 不支持此功能。对于Get,您应该只使用关键字段。即使该其他属性是唯一键,这也是不可能的。您正在进行的任何其他调整(设置属性)都不是处理此问题的正确方法[KeyExplicit]Name如您所见,它将产生其他问题。

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


推荐阅读