Каково ожидаемое использование атрибута [Key] с FluentMap?
Я впервые использую dapper для некоторых небольших преобразований данных в интеграционных тестах и столкнулся с проблемой сопоставления поля первичного ключа.
Я пробовал свойство Entity с атрибутом [Key] и без него (без [Key] Dapper выдает исключение, потому что в Entity отсутствует свойство Id). Кроме того, весь приведенный ниже код прекрасно работает для запроса данных из БД, только когда происходит обновление с использованием Dapper.Contrib, что-то идет не так.
Соответствующие части моей сущности выглядят следующим образом:
[Table("subscription")]
public class SubscriptionConfiguration
{
[Key]
public int SubscriptionId { get; set; }
}
Соответствующая часть моей карты Dapper.FluentMap выглядит следующим образом:
public class SubscriptionConfigurationMap :
EntityMap<SubscriptionConfiguration>
{
public SubscriptionConfigurationMap()
{
Map(config => config.SubscriptionId).ToColumn("subscription_id");
}
}
Соответствующая часть моего кода доступа к данным:
public async Task<bool> SaveAsync(SubscriptionConfiguration subscription)
{
using (var connection = new MySqlConnection(this.ConnectionString))
{
await connection.OpenAsync();
return connection.Update(subscription);
}
}
И моя карта регистрации:
FluentMapper.Initialize(config => {
config.AddMap(new SubscriptionConfigurationMap());
});
Я ожидаю, что соответствующая строка моей таблицы будет обновлена, но вместо этого я получаю исключение MySQL, что where
предложение ссылается на столбец SubscriptionId
который не существует (что правильно, как показано в моем отображении имя столбца subscription_id