【发布时间】:2014-01-01 02:11:06
【问题描述】:
我想知道是否有人可以建议我如何在 EF6 中首先使用代码完成以下操作
如果我将 Table_3 作为列表添加到我的实体中的 Table_1 和 Table_2。 EF 自动为 Table_3 中的两个表生成外键列,而不是识别它们属于同一类型。
我的模型类设置如下。
public interface IParent
{
int ID { get; set; }
List<Table_3> Children { get; set; }
}
public class Table_1 : IParent
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Table_3> Children { get; set; }
}
public class Table_2 : IParent
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Table_3> Children { get; set; }
}
public class Table_3
{
[Key]
public int ID { get; set; }
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual IParent Parent { get; set; }
}
EF 代码首先生成如下
编辑
只是为了让遇到同样问题的人知道
我现在已经通过将 IParent 接口更改为抽象类来解决这个问题 我的课程现在如下所示
[Table("ParentBase")]
public abstract class ParentBase
{
[Key]
public int ID { get; set; }
public List<Table_3> Children { get; set; }
}
[Table("Table_1")]
public class Table_1 : ParentBase
{
public string Name { get; set; }
}
[Table("Table_2")]
public class Table_2 : ParentBase
{
public string Name { get; set; }
}
[Table("Table_3")]
public class Table_3
{
[Key]
public int ID { get; set; }
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual ParentBase Parent { get; set; }
}
用表格排列
这会起作用,但如果能满足原件会更好。
【问题讨论】:
标签: c# sql entity-framework ef-code-first