2012-10-25 32 views
0

我很難找出解決「無法確定類型之間關聯的主要結束」的正確方法。此關聯的主端必須使用任一的關係流利API或數據被明確地配置」實體框架動態屬性綁定+無法確定類型之間關聯的主要端點

我有這樣的實體。

public partial class Document 
{ 
    DocumentId {get; set;} 
    DocumentName{get; set;} 
} 

public class SpecialDocument 
{ 
    DocumentId {get; set;} --> this is actually a foreign key from Document 
           at the same time it is also the primary key 
    SpecialDocumentName {get; set;} 
} 

我找到了解決像上的屬性添加一個ForeignKey屬性。

public partial class SpecialDocument 
{ 
     [ForeignKey("Document")] 
     DocumentId {get; set;) 
     SpecialDocumentName {get; set;} 
} 

但問題是被自動生成的類,每當我更新EDMX文件的SpecialDocument被覆蓋,所以現在我需要重新添加ForeginKey屬性。

有什麼我可以做的SpecialDocument或Dnyaminc屬性附加到屬性的單獨的部分類?謝謝!

回答

0

看起來您正在嘗試使用繼承,所以DocumentId不會被視爲Entity Framework的外鍵。嘗試改變你的模型來使用繼承,它應該解決你的問題,就像這樣。

public partial class Document 
{ 
    DocumentId {get; set;} 
    DocumentName{get; set;} 
} 

public class SpecialDocument : Document 
{ 
    SpecialDocumentName {get; set;} 
} 

通過從SpecialDocument去除DocumentId財產,使其從Document繼承,實體框架會知道,當你創建一個新的SpecialDocument將首先創建一個標準的Document,然後在SpecialDocument表將添加的屬性按要求。

+0

不,我不想在這裏完成繼承。這些實體只是由edmx自動生成的。和它恰好相反,DocumentId既是這兩個類的主鍵,又是來自SpecialDocument的DocumentId是來自DocumentId(Document)的一個外鍵。 –

+1

你會考慮哪種模式?一種解決方案是先切換到代碼,或者改變你的'tt'模板來反映這一點。但是,你在做什麼,如果不是一種標準的做法,那麼爲什麼你會得到奇怪的行爲。 –

+0

是改變tt模板現在在我的軌道上,以反映屬性。我仍然在看它如何在tt文件中完成它。謝謝! –

相關問題