我在如何为实体类中的继承关系生成数据库时遇到问题。它正确地使子类表中的主键 ID 引用超类表中的 ID - 但它也在超类表中创建了一个不需要的外键。这是我的课程:
抽象超类:
public abstract class DaqObject
{
public int ID { get; set; }
public int AgencyID { get; set; }
public int DaqObjectTypeID { get; set; }
[ForeignKey("AgencyID")]
public virtual Agency Agency { get; set; }
[ForeignKey("DaqObjectTypeID")]
public virtual DaqObjectType DaqObjectType { get; set; }
public virtual Document InheritingDocument { get; set; }
}
对应的数据库表有以下列:
- ID(PK,int,不为空)
- AgencyID (FK, int, not null)
- DaqObjectTypeID (FK, int, not null)
- InheritingWell_ID (FK, int, null)
子类:
public class Document : DaqObject
{
public string Name { get; set; }
}
使用具有以下列的相应数据库表:
- ID(PK、FK、int,不为空)
- 名称 (nvarchar(max), null)
(这些类已被精简为示例。)
数据库中的 DaqObject 表以 InheritingDocument_ID 列结束。我可以自己创建数据库并在超类表中没有该外键的情况下建立关系。是否可以让 EF 代码先做同样的事情?