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

时间:2013-09-05 18:43:50

标签: entity-framework

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

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

•以Lodging实体为基础

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

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

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:1)

当CSDL中未映射属性且数据库中的列不可为空时,将使用SSDL中的AFAIR默认值。在没有默认值的情况下,任何插入都不会成功。