【问题标题】:How to Get entity by Unique Key using Dapper.Contrib?如何使用 Dapper.Contrib 通过唯一键获取实体?
【发布时间】:2020-03-23 07:41:37
【问题描述】:

假设我有一个对象

public class User
{
    [Key]
    int TheId { get; set; }
    string Name { get; set; }
    int Age { get; set; }
}

TheId 是我的自动增量列,Name 是我的唯一键。保存用户时,我想通过以下方式检查其存在:

var user= connection.Get<User>("John");

但是,由于我的密钥不是Name 而是TheId,我不能这样做。如果我将Name 属性设置为[KeyExplicit],那么当我想通过以下方式保存用户时:

connection.Insert(myUser);

这一次,dapper 期待TheId 属性由我填写,而不是让数据库自动递增。

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

【问题讨论】:

    标签: c# dapper dapper-contrib


    【解决方案1】:

    如果我理解正确,你愿意Get通过key以外的属性。

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

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

    【讨论】:

    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多