2012-01-11 70 views
1
CREATE TABLE Lodging 
(
    LodgingID int PRIMARY KEY IDENTITY, 
    LodgingName nvarchar(100), 
    Resort bit NOT NULL, 
    ResortChainOwner nvarchar(100) NOT NULL, 
     ... 
) 

Lodging DB表映射到Lodging实体。我则实现了一个TPH继承:为什么在使用TPH继承时忽略默认值?

•随着Lodging实体为基础

•我已经创建了一个新的实体Resort,从Lodging派生。

•我感动具体度假物业ResortChainOwnerResort实体类型,还可以设置(在SSDL)ResortChainOwner's默认值"notApplicable"

•寄宿表的Resort列是一个歧视性的列。如果Resort列包含0,然后记录被物化为Lodging实体,如果列包含1,然后记录被物化到Resort实体

当下面的代码SaveChanges被调用时,EF应该提供(给INSERT命令)的默认值对于ResortChainOwner领域,而是它提供了一个Null

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

因此,我怎么上插入的力EF提供了ResortChainOwner列的默认值?

谢谢

回答

0

您已经定义的度假类的默认值,但您将一个超类“寄宿”。所以改为使用:

var lodging = new Resort(); 

如果我理解得很好,基类“Lodging”甚至不再拥有该属性。

0

试试你的Lodging实体设置为抽象并创建从Lodging派生的第二实体。我有一种感觉TPH只适用于实际从包含鉴别器字段的类继承的类。

相关问题