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
列提供默认值?
谢谢
答案 0 :(得分:1)
当CSDL中未映射属性且数据库中的列不可为空时,将使用SSDL中的AFAIR默认值。在没有默认值的情况下,任何插入都不会成功。