假设我有两个具有相似字段但实际上有两个不同的实体。例如
public class Foo{
public int ID{get;set;}
public int IndexNumber{get;set;}
public string Name{get;set;}
public string Info{get;set;}
}
与
public class Bar{
public int ID{get;set;}
public DateTime AppointmentTime{get;set;}
public string Name{get;set;}
public string Info{get;set;}
}
在实体框架中,您实际上可以将ID,名称和信息放入第三个父类,并让其他两个继承自它,并让它自动将它们一起存储在一个表中,并带有一个“鉴别器”列,用于说明用于区分它们的类名。
我的问题是,假设两个模型(外键和其他)之间没有关系,那么使用空值和鉴别符或两个表做一个表是否更好?
答案 0 :(得分:4)
最好不要从物理存储角度考虑实体,而应考虑域。应用不同业务规则且彼此不相关的不同实体应单独存储。
即使Foo
和Bar
实体目前具有关联字段集,它们也可用于不同目的。并且不要忘记实体不变量,它们可能不同(例如Name
类中的Foo
字段只能包含名称,但Name
中的Bar
也应包含姓氏。是合成的例子,但是应该指出差异,即使两个字段都是字符串)
答案 1 :(得分:2)
我更愿意使用2个表,或者确切地说,每个混凝土类的表。您可以在此链接中深入查看不同的方法: Inheritance Strategy in Code-First