System.ArgumentNullException:值不能为null。参数名称:来自继承的entitySet

时间:2019-06-20 16:01:57

标签: entity-framework inheritance migration

在运行Add-Migration时,程序包管理器控制台抛出异常时,我在创建迁移时遇到问题:

System.ArgumentNullException: Value cannot be null. Parameter name: entitySet

一个非常虚假的错误,如果TableMappingGenerator给出了关于它要创建的实体的错误,那将很好。

搜索了Stack Overflow上的许多帖子后,普遍的共识是,在模型上包含无法映射到数据库的属性会导致此问题。

我经历了有问题的数据上下文,但是我没有对任何类,子类或配置进行任何更改。

最终,在创建一个新上下文并一次添加一个DbSet <>之后,我遇到了异常。有问题的模型没有更改,因此我删除了所有的功能,一次又添加了一个,直到引发异常。

引起问题的属性是一个相对简单的MoneyModel,看起来像这样:

public class Money
{
    public Currency Currency { get; set; }

    public decimal Amount { get; set; }
}

货币是ISO货币的枚举。奇怪的是,模型没有更改

我最终发现问题出在另一个模型上,该模型现在是从Money继承的。费用模型如下:

public class Cost : Money
{
    public CostType Type { get; set; }
}

在这种情况下,成本类型是枚举。该模型已成功用于其他数据上下文中,并且是迁移的一部分。

将我的模型模型更改为成本模型,删除了例外,并允许我构建迁移。

我的问题是,为什么这首先破坏了Add-Migration?我们在其他模型中使用继承没有任何问题。两种模型都是默认构造函数的公共模型。任何建议将不胜感激。

0 个答案:

没有答案