2011-06-10 94 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