2011-06-10 104 views
0

對每種類型繼承使用表是否可以在多個派生類型中使用同一個鍵具有相同的數據?實體框架4.1,每種類型的表繼承和查找表

例如

接頭類型:

[Table("BaseType")] 
public abstract class BaseType 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
} 

派生類型:

[Table("DerivedTypeA")]  
public class DerivedTypeA : BaseType {} 

派生類型B:

[Table("DerivedTypeB")] 
public class DerivedTypeB : BaseType {} 

隨着許多類型的或者是DerivedTypeADerivedTypeB我有一種既是DerivedTypeA也是的特殊類型

當我通過爲此類型創建一個新的DerivedTypeADerivedTypeB來爲數據庫創建數據庫時,它將被添加兩次,使用不同的Id s。雖然不是世界末日,但我希望它在兩個派生表中具有相同的Id

這可能嗎?

在此先感謝。

回答

0

如果我正確理解你,你正在描述一個多繼承的情況,這在C#中是不受支持的。 DerivedA不能是DerivedB,反之亦然,因爲它們是兄弟姐妹。

本文將幫助確定問題,並提出這可能會幫助你的模式: http://www.codeproject.com/KB/architecture/smip.aspx

+0

感謝您的快速答覆。我不確定這是多重繼承情況 - DerivedA和DerivedB仍然只從一個抽象類BaseType繼承而不是多個類。 – Col 2011-06-10 19:36:40

+0

是的,但你已經說過你有一個類型是* DerivedA和DerivedB。在C#中可能的唯一方法是如果DerivedB派生自DerivedA(或相反),而不是都派生自BaseType。 – 2011-06-11 00:12:02

+0

我接受你的多重繼承點。最後,我設法重組我的數據,以便所有類型都是DerivedA或DerivedB,現在所有類型都按預期工作。謝謝。 – Col 2011-06-14 08:18:54

相關問題