0
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列提供默认值?

谢谢

4

1 回答 1

1

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

于 2013-09-06T03:36:58.073 回答