我在工作中使用Entity Framework并遇到了一些问题。
通常我会听到创建包含与某些域相关的表的小型Edmx文件,即:Help Desk Edmx,HR Edmx等。而不是在一个大的Edmx中加载所有表,哪个更简单,但性能更好考虑因素(主要是设计和建造时间),这是不可行的。
我遇到了一些麻烦,首先是关于commom表,即:Employees Tables,它完全是Edmx的,当我使用Employee类引用并且对两个命名空间都有用时会发生冲突,那么我必须以全名MyCompany.HelpDesk.Employee引用Empoyee类。
看起来不自然。
我发现自己在所有EDMX上都反复添加相同的表,这是一个返工,我花了一些时间在实体框架设计中添加一个表,因为我在Add Table Dialog中有2k表。
也许VS2012可以是在同一个Edmx文件中加载2k表的解决方案(因为设计师可以被拆分),但我不相信,因为它也延迟编译,不仅打开设计师。 / p>
另一种选择可能是Code First,但它没有一个合适的工具来将数据库反向工程到类,因为它试图从数据库加载所有表,大约2个小时!#/ p>
答案 0 :(得分:1)
您的问题通常无法解决。 EF支持share common entities across multiple CSDL文件的某种方式,但它有很多缺点:
VS2012将允许您在单个EDMX中使用多个图表,但我真的不知道这对2k表有多快。
恕我直言2k表听起来不像EF映射功能的用例 - 尤其不适用于您希望为您生成代码的功能。大规模开发通常涉及大规模编码或开发自己的工具。您当前的方式(通过再次映射共享实体)是使用默认EF工具的最佳方法。
如果您对POCO类使用T4生成器,您甚至可以修改T4模板,以便对所有EDMX文件始终使用相同的类。 POCO类只按类名映射 - 命名空间没有任何区别。这将需要您花费一些精力进入T4生成器,以确保共享类只生成一次并从所有模型特定类中正确引用。
顺便说一下。启动应用程序并加载所有映射需要多长时间?您使用的是预生成的EF视图吗?