实体框架,继承和命名空间

时间:2010-11-13 10:06:37

标签: entity-framework inheritance namespaces

我正在使用Entity Framework 4.0,并且有一个大量使用继承的概念模型。

我可以很好地执行标准继承功能,但是我遇到了生成的C#类的命名空间问题。

我的问题是实体框架总是在 相同的 C#命名空间中生成所有类(包括基类和派生类)。实体框架(基础和派生)生成的类的完全限定名称的假设示例,其根名称空间为“MyApp”,如下所示

MyApp.MyBaseClass
MyApp.MyDerivedClassA
MyApp.MyDerivedClassB
MyApp.MyDerivedClassC
etc...

但是,我想将基类和派生类放入 不同的 命名空间。例如,基类仍将在根命名空间(例如,MyApp)中定义,但派生类将在“子命名空间”(例如,MyApp.MyDerivedClasses)中定义。然后,派生类的完全限定名称如下所示:

MyApp.MyDerivedClasses.MyDerivedClassA
MyApp.MyDerivedClasses.MyDerivedClassB
MyApp.MyDerivedClasses.MyDerivedClassC
etc...

通过在基类上手动创建(即不使用Linq To Sql Designer)InheritanceMappingAttribute并将映射指向“派生”中定义的派生类,我设法通过Linq To Sql实现了这一点。 “命名空间。

但是,我无法弄清楚是否可以在Entity Framework 4.0(带或不带设计器)的基础和派生类之间使用不同的命名空间。可以这样做,如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用标准工具集是不可能的。 设计器文件上的命名空间规范适用于其中包含的所有实体。 你可以尝试一种代码优先的方法来解决这个问题(多数是你最好的选择)。除此之外,还可以获得一本关于T4模板的好书并修改T4 POCO生成器,以便您指定这些内容。