2015-05-13 72 views
1
Class GeneralRequest 
{  
String BaseProperty { get set} 
} 

RapidRequest: GeneralRequest 
{ 
Bool IsSignRequired { get set}  
} 

BackRequest : GeneralRequest 
{ 
Bool IsSignRequired { get set}  
} 

OtherRequest: GeneralRequest 
{ 
String Note { get set} 
} 

這是我在我的項目中的代碼結構。繼承與實體框架代碼首先,字段重複在表

屬性IsSignRequired來自BackRequest和RapidRequest,但它不需要進入OtherRequest。

但是當我使用這些代碼生成數據庫。

我得到的財產IsSignRequired在我的表來兩次 IsSignRequired1 IsSignRequired2等

我怎麼可以指定它在我的表中只有一次neded

+1

什麼是您的映射配置? – Kryptos

+0

模型中的'OtherRequest' **屬性**在哪裏?我只看到'OtherRequest' ** class **。 – romanoza

+0

這是IsSignRequired proprty.Let me編輯帖子感謝羅曼 –

回答

1

你要麼需要有另一箇中間類RapidRequest並且BackRequest繼承自定義繼承的IsSignRequired,或者使用ColumnAttribute來強制字段的名稱。另一種選擇是使用TablePerType繼承,但是這將爲每個子類的唯一字段生成單獨的表。

EntityFramework正在這樣做,因爲該字段是在子類上獨立聲明的。默認情況下,每個子類將獲得該類中定義的任何字段的唯一副本,只有被繼承的字段將被共享。