实体框架Code First - 反向工程

3
我即将开始使用Entity Framework Code First开发一个ASP.Net MVC 4 Web应用程序。由于数据库已经存在,我使用Code First的反向工程能力来生成我的领域类。
然后,我希望将这些领域类放入一个单独的项目中,以使它们保持持久性无知。但是,当我运行反向工程工具(使用Entity Framework Power Tools)时,我发现创建了领域类,同时还创建了一个名为Mapping的文件夹,其中包含每个领域类的映射类,这些映射类使用Fluent API来映射表属性,这很好。
但是,我也发现映射类依赖于对Entity Framework的引用,我想知道这是否被认为是不好的做法?通常情况下,当我创建POCO类时,它们完全保持持久性无知,也就是说,在该项目中没有任何对Entity Framework的引用。
你怎么看?
谢谢。
1个回答

5
你可以将POCO类保留在一个项目中,而将映射内容放在另一个项目中。只需在POCO类所在的项目中添加引用即可。另一种方法是创建数据访问层,并将映射内容移至该层。这样你就会有三个项目:主MVC项目、模型项目和包含映射内容以及对EntityFramework的引用的数据访问层。
例如,你的解决方案可能如下所示:
1. Web User Interface (MVC)
2. Business layer
3. Unit of Work/Repository
4. Data access layer (Mapping from EF Reverse Engineering)

所有四个项目都可以访问第五个项目——领域模型(来自EF Reverse Engineering的模型)。您的1与2通信,2与3通信,3与4通信。这四个项目都引用了领域模型,因此您不必在层之间执行任何类型的领域模型转换。
顺便说一句,我忽略了服务层,但如果您使用Web服务或REST,则可以将其放入另一个项目中,但我们不要进入太多细节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接