2012-01-11 85 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只適用於實際從包含鑑別器字段的類繼承的類。

相關問題