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 为度假村链所有者列提供默认值?
谢谢
您已为 Resort 类定义了默认值,但已实例化了超类"住宿"。因此,请改为使用:
var lodging = new Resort();
基类"住宿"甚至不再具有该属性,如果我了解您的话。
尝试将Lodging
实体设置为抽象并创建派生自Lodging
的第二个实体。我有一种感觉 TPH 仅适用于实际继承自包含鉴别器字段的类的类。