Dapper.Contrib Получить сущность по уникальному ключу - PullRequest
0 голосов
/ 23 марта 2020

У меня есть объект, предположим,

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

TheId - это мой столбец автоинкремента, а Name - мой уникальный ключ. При сохранении пользователя я хочу проверить его существование по

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

Но из-за того, что мой Ключ не Имя , а TheId , я не могу сделать это. Если я установлю свойство Name как [KeyExplicit] в тот раз, когда я захочу сохранить моего пользователя с помощью

connection.Insert(myUser);

На этот раз, более щадящее ожидание TheId заполненного мной свойства , не позволяйте базе данных автоматически увеличиваться.

Итак, мне интересно, есть ли элегантный способ добиться, чтобы пометить какое-либо свойство или свойства, которые учитывает dapper, при поиске в БД. Я не хочу искать по guid, но по уникальным ключам.

Заранее спасибо.

1 Ответ

0 голосов
/ 23 марта 2020

Если я правильно понял, вы готовы Get по свойству, отличному от ключа.

Это не поддерживается dapper-contrib. Для Get следует использовать только ключевое поле. Это невозможно, даже если это другое свойство является уникальным ключом. Любые другие изменения, которые вы делаете (устанавливая [KeyExplicit] в Name свойство), не являются правильным способом справиться с этим; это создаст другие проблемы, как вы можете видеть.

Для Get с другими свойствами, лучшая альтернатива - использовать Dapper, напрямую обходя Contrib.

...