使用TPH继承时为什么忽略默认值?

时间:2012-01-11 18:48:55

标签: entity-framework-4

CREATE TABLE Lodging
(
     LodgingID int PRIMARY KEY IDENTITY,
     LodgingName nvarchar(100),
     Resort bit NOT NULL,
     ResortChainOwner nvarchar(100) NOT NULL,
         ...
)

Lodging数据库表映射到Lodging实体。然后我实现了TPH继承:

•以Lodging实体为基础

•我创建了一个新实体Resort,它派生自Lodging

•我将度假村特定的属性ResortChainOwner移至Resort实体类型,并设置(在SSDL中)ResortChainOwner's默认值为"notApplicable"

•住宿表的Resort列是歧视性列。如果Resort列包含0,则记录将显示在Lodging实体中,如果列包含1,则记录将具体化为Resort实体

当调用以下代码SaveChanges时,EF应该为ResortChainOwner字段提供(对于插入命令)默认值,而是提供Null

        var lodging = new Lodging();
        ...
        context.Lodgings.AddObject(lodging);
        context.SaveChanges();

那么如何在插入时强制EF为ResortChainOwner列提供默认值?

谢谢

1 个答案:

答案 0 :(得分:0)

您已为Resort类定义了默认值,但您已实例化了超类“Lodging”。所以改为使用:

var lodging = new Resort();

如果我理解你的话,基类“Lodging”甚至不再具有该属性。