我有一个我想在数据库中表示的共享类型。我需要先知道是否可以使用代码,或者它是否是糟糕的设计。(请指出你的推理来源)。
这是布局:
public class A
{
public Guid Id;
public Guid ParentId; // Points to either B or C
public string Foo;
}
public class B
{
public Guid Id;
public virtual ICollection<A> ManyA { get; set; }
// Other fields
}
public class C
{
public Guid Id;
public virtual ICollection<A> ManyA { get; set; }
// Other fields
}
我已经通过使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
注释来管理 GUID PK,我相信这将使这成为可能。
目标是保持A
-table 简单;我不希望它有B_Id
和C_Id
列,因为我认为它们是不必要的,并且D
将来可能会有一种类型,它有很多A
就像B
和C
。此外,此方案用于其他一些关系。
我认为问题的精神很明显,但是特定于 EF 的类成员只是为了说明问题。如果他们需要改变,那就这样吧。
(我很抱歉这个人为的例子,但是暴露这个的真实性质,IMO,并没有澄清问题)。
另外,我试着搜索了几个小时!我不知道找到合适答案的正确命名法。一般来说,我对数据库和 EF 很陌生。