如何使用Dapper.Contrib通过Unique Key获取实体?

问题描述 投票:1回答:1

我有一个对象,假设

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 但是唯一的键。

c# dapper dapper-contrib
1个回答
1
投票

如果我理解正确,你愿意 Get 的属性。

dapper-contrib不支持这个。对于 Get只能使用键字段。即使其他属性是唯一的键,这也是不可能的。您正在做的任何其他调整(设置 [KeyExplicit] 关于 Name 属性)不是处理这个问题的正确方法;正如你所看到的,它会产生其他问题。

如你所见,它会产生其他问题。Get 与其他属性,更好的选择是直接绕过Contrib使用Dapper。

© www.soinside.com 2019 - 2024. All rights reserved.