在运行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
?我们在其他模型中使用继承没有任何问题。两种模型都是默认构造函数的公共模型。任何建议将不胜感激。