NetCore 1.1 + Npgsql,Add-Migration似乎忽略了[NotMapped]?

时间:2016-12-02 13:43:13

标签: entity-framework asp.net-core ef-migrations npgsql asp.net-core-1.1

警告:我对此非常陌生,所以对我很轻松。 我正在开发一个netcore应用程序,并使用Npgsql连接到postgresql数据库。我不确定导致错误的原因,但是当我尝试使用具有[NotMapped]属性的2-d数组(double [] [])的模型运行Add-Migration时,我得到以下内容错误:

  

System.InvalidCastException:无法转换类型的对象   ' Microsoft.EntityFrameworkCore.Storage.Internal.NpgsqlArrayTypeMapping'   输入   ' Microsoft.EntityFrameworkCore.Storage.Internal.NpgsqlBaseTypeMapping'

我怀疑它不是Npgsql问题,因为我认为,[NotMapped]属性应该忽略double [] []而不是尝试将其映射到某个东西。

这是模型中令人讨厌的部分

[NotMapped]
public double[][] LossData
{
    get
    {
       return JsonConvert.DeserializeObject<double[][]>(InternalLossData);
    }
    set
    {
       InternalLossData = JsonConvert.SerializeObject(value);
}

Microsoft.EntityFrameworkCore.Tools是版本1.1.0-preview4-final。我假设这是负责Add-Migration的包,因此我怀疑问题可能存在。

但我不知道。

更新

mww的建议没有用,所以我切换到使用默认的sql驱动程序(而不是Npgsql)并且它有效。所以这会把它缩小到我没有正确做的事情或Npgsql的事情。

2 个答案:

答案 0 :(得分:1)

感谢您的报告,这是Npgsql EF Core提供程序中的一个错误。修复程序将针对1.1.1发布,同时使您的正常非公开(至少是getter或setter)或降级到1.0.x.

答案 1 :(得分:0)

您也可以使用Fluent API,只需在DBContext类中添加它以忽略属性。

在方法OnModelCreating()添加

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<YourModelClass>().Ignore(d => d.LossData);
   base.OnModelCreating(modelBuilder);
}