2

我的基表已經有一些寄存器ID = 5。 如何在專用表上添加相同的ID?繼承 - 在專用表上插入記錄

例子:

BaseTable 
ID INT 
Name Varchar(100) 

DerivedTable 
ID INT 
Test BIT 

我插在基表中的一些值

Context.BaseTable.Add(new BaseTable(){ Name = '123' }); 
Context.SaveChanges(); 

身份是5

現在我想添加專門的值

Context.DerivedTable.Add(new DerivedTable(){ ID = 5, Test = 1 }); 
Context.SaveChanges(); 

它沒有工作,linqpad向我顯示sql正試圖創建一個新的BaseTable註冊表。

是否有任何方法來解決這個問題?

韓國社交協會

+0

您是否將這些映射爲'Table per Type'? – Eranga 2012-01-27 00:05:55

+0

@Eranga我映射爲繼承表 – Alexandre 2012-01-27 11:26:29

回答

2

如果你把它映射爲繼承(EDMX TPTCode first TPT)你不能插入基表分開(應該最有可能成爲你的模型抽象類)。您只能插入派生表,EF將處理對兩個映射表的插入:

Context.DerivedTable.Add(new DerivedTable(){ Name = "123", Test = 1 }); 
Context.SaveChanges(); 
+0

這就是問題,我不想EF插入基表上,只是派生的 – Alexandre 2012-01-27 11:26:04

+0

在這種情況下,你不能使用繼承,你必須改爲使用普通的一對一建模你的類,一個關係。 – 2012-01-27 11:50:39

+0

我無法更改結構....我的解決方法是通過EF創建Store Procedure和exec。 Tks Ladislav – Alexandre 2012-01-27 16:26:47