Каково ожидаемое использование атрибута [Key] с FluentMap? - PullRequest
1 голос
/ 01 мая 2019

Я впервые использую dapper для некоторых небольших преобразований данных в интеграционных тестах и ​​столкнулся с проблемой сопоставления поля первичного ключа.

Я пробовал свойство Entity с и безАтрибут [Key] (без [Key] Dapper выдает исключение, потому что у сущности нет свойства 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

...