SQL Server一两个表?

时间:2017-06-15 14:52:43

标签: c# .net sql-server entity-framework

假设我有两个具有相似字段但实际上有两个不同的实体。例如

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,名称和信息放入第三个父类,并让其他两个继承自它,并让它自动将它们一起存储在一个表中,并带有一个“鉴别器”列,用于说明用于区分它们的类名。

我的问题是,假设两个模型(外键和其他)之间没有关系,那么使用空值和鉴别符或两个表做一个表是否更好?

2 个答案:

答案 0 :(得分:4)

最好不要从物理存储角度考虑实体,而应考虑域。应用不同业务规则且彼此不相关的不同实体应单独存储。

即使FooBar实体目前具有关联字段集,它们也可用于不同目的。并且不要忘记实体不变量,它们可能不同(例如Name类中的Foo字段只能包含名称,但Name中的Bar也应包含姓氏。是合成的例子,但是应该指出差异,即使两个字段都是字符串)

答案 1 :(得分:2)

我更愿意使用2个表,或者确切地说,每个混凝土类的表。您可以在此链接中深入查看不同的方法: Inheritance Strategy in Code-First