我正在使用 Entity Framework 4.0,并且有一个大量使用继承的概念模型。
我可以很好地执行标准继承功能,但我在生成的 C# 类的命名空间方面遇到了问题。
我的问题是 Entity Framework 总是在 中生成所有类(包括基类和派生类)。同 C# 命名空间。由 Entity Framework (包括基类和派生类)生成的类的完全限定名称的假设示例,其根命名空间为“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 设计器)使用 Linq To Sql 实现了这一点
InheritanceMappingAttribute
在基类上并将映射指向在“派生”命名空间中定义的派生类。但是,我不知道是否可以在带有或不带有设计器的 Entity Framework 4.0 的基类和派生类之间使用不同的命名空间。这可以做到吗?如果可以,我该怎么做?
最佳答案
不,使用标准工具集是不可能的。
设计器文件上的命名空间规范适用于其中包含的所有实体。
你可以尝试代码优先的方法来解决这个问题(prolly 你最好的选择)。除此之外,获取一本关于 T4 模板的好书并修改 T4 POCO 生成器以让您指定这些内容。
关于entity-framework - Entity Framework 、继承和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4171964/