Entity Framework 6 添加额外的继承列

Entity Framework 6 adding extra inherited column

我有继承自 MetadataTyper class 的 class PERTActivity_T,与其他 table 一样。

与其兄弟姐妹相反PERTActivity_T已经拥有属性:

[ForeignKey("BSContext")]
public int? BSContextId { get; set; }
public BSContext BSContext { get; set; }

但现在我需要从 MetadataTyper 继承的所有 table 也具有这些属性。所以我从 PERTActivity_T 中删除了它们并将它们包含在 MetadataTyper 中但是当我生成迁移时它删除了从 BSContextIdBSContext 的关系并添加了一个名为 BSContext_Id(带下划线)并向其添加外键。

这仅发生在 PERTActivity_T 其他 table 继承自 MetadataTyper 的迁移上。

起初我尝试手动编辑迁移以删除对 PERTActivity_T 的所有更改,因为它已经按照我需要的方式创建,一切都可以正常工作,但是当我使用映射器编辑 PERTActivity_T 或任何与之相关的 table EF 抛出错误,指出 BSContext_Id 未知。

如何让 EF 理解 PERTActivity_T 不需要任何额外的更改?

原来我的问题是 BSContext 已经包含导航 属性 到 PERTActivity_T 然后我复制了它。

我所要做的就是删除重复的导航 属性 并且迁移生成正常。