Каково ожидаемое использование атрибута [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

0 ответов

Другие вопросы по тегам