派生类

时间:2017-07-24 18:38:39

标签: c# entity-framework-6

我有一个基类Company和两个派生类RetailerSupplier。 我必须向Retailer类添加一个枚举,但现在当我尝试创建一个新的Supplier时,我得到以下SQL错误:

  

无法将值NULL插入“OperatingStatus”列,表'Company';列不允许空值。 INSERT失败。声明已经终止。

如果它有帮助,这里是类和枚举:

public abstract class Company
{
    ...
}

public class Retailer : Company
{
    public OperatingStatus OperatingStatus { get; set; }
    ...
}

public class Supplier : Company
{
    ...
}

public enum OperatingStatus
{
    Unknown = 0,
    Active = 1,
    Inactive = -1
}

有没有办法在不将枚举移动到基类的情况下完成这项工作?我只需要将其默认为0

1 个答案:

答案 0 :(得分:0)

传统上,有两种方法可以实现"继承"在数据库..和EF确实支持他们两个。 您似乎已经选择将所有类放在一个单独的大表中(每个层次结构的表)。 在这种情况下,您需要使该字段为Nullable(可以为null),以便数据不会抱怨。您仍然可以在业务对象级别而不是数据库级别验证该字段。

另一种方式(每个具体类的表)是为供应商中的新属性制作单独的表,而为零售商中的区属性制作另一个表。 这将是继承的第二个解决方案。

http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx