0

我想创建一个 DataAccess / DataLayer 项目并在那里封装 EF,这样我的 MVC 项目就不会知道我实际上在使用 EF。未来我可能会决定使用 NHibernate,Visual Studio 创建的开箱即用的 MVC 项目将 EF referece/DLL 添加到 web 项目中。我当然不能从 MVC 访问 DbContext,因为它需要 EF 引用。

结果,由于需要 EF,我将无法使用 Code First 数据注释。

是否值得创建一个存储库,或者我应该保持它“简单”并将 EF 引用添加到我的 MVC 项目?

对我来说,我需要将对 EF 的引用添加到我所有使用上下文/数据库的项目、测试和客户端中,这对我来说毫无意义。

谢谢

4

2 回答 2

1

您要创建的是典型的图层模式。在顶部是表示层,在中间是业务层,在底部(或最后一层)是 DAL 层。

你如何设计你的层完全取决于意见和需要,但我上面描述的方式需要你有 3 个不同的项目。一个 MVC 项目、一个逻辑项目和一个 DAL 项目。DAL 项目将包含您的 EF 引用和您的存储库对象。然后由您将 DbContext/ObjectContext 项目转换为 POCO 以在业务层中使用它们。业务层将了解 EF(取决于您如何传递 EF 对象),但业务层随后会将其自己的对象(将它们从您的 DAL 层对象映射)传递给 MVC——从而将 EF 与 MVC 层完全解耦.

如果你打算使用这种类型的模式,你应该更进一步,将依赖注入与一个引导容器(使用 Unity 框架的横切项目,或类似的东西)结合起来。

请参阅 Microsoft 模式和实践, http: //msdn.microsoft.com/en-us/library/ff650706(第 25 章是分层的一个很好的例子)。

高温高压

于 2012-08-30T20:59:13.627 回答
0

我选择在几乎所有项目中实现存储库系统的确切目的是将我的 DAL 与任何一种 DataAccess 技术甚至特定数据库分离。

于 2012-08-30T20:48:13.020 回答