FluentMap的[Key]属性的预期用途是什么?

时间:2019-05-01 11:33:47

标签: dapper dapper-contrib dapper-fluentmap

我第一次使用dapper进行集成测试中的一些小数据转换,并遇到映射主键字段的问题。

我尝试了带有和不带有[Key]属性的Entity属性(没有[Key] Dapper会引发异常,因为该实体上没有Id属性)。另外,下面的所有代码都可以很好地用于从数据库中查询数据,只有在使用Dapper更新时,才会出错。

我实体的相关部分如下:

[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 个答案:

没有答案