3

我即将开始使用 Entity Framework Code First 开发 ASP.Net MVC 4 Web 应用程序。因为数据库已经存在,所以我使用 Code First 执行逆向工程的能力来生成我的域类。

然后,我希望将这些域类放入我的解决方案中它们自己的单独项目中,以保持它们对持久性的无知。但是,当我运行该工具对我的数据库进行逆向工程(使用 Entity Framework Power Tools)时,我发现域类已创建,但还创建了一个名为 Mapping 的文件夹,其中包含每个域类的映射类,然后使用 Fluent API映射表属性。这一切都很好。

但是,我还发现,映射类依赖于对实体框架的引用,我只是想知道这是否被认为是不好的做法?通常当我创建 POCO 类时,它们完全不了解持久性,即在该项目中根本没有对实体框架的引用。

你的意见?

谢谢。

4

1 回答 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 逆向工程的模型)。您的 1 与 2 通信,2 与 3 通信,3 与 4 通信。所有这四个都引用了域模型,因此您不必在层之间执行任何类型的域模型转换。

顺便说一句,我忽略了服务层,但如果你有 web 服务或 REST,你可以将它放在另一个项目中,但我们不要过多的细节。

于 2012-12-21T09:58:31.933 回答