我应该为EF6实现Repository,Work of Work?

时间:2014-02-12 08:32:32

标签: c# asp.net-mvc entity-framework unit-testing

由于MSDN说DbContext

  

DbContext实例表示工作单元和   存储库模式,以便它可用于从数据库进行查询   并将更改组合在一起,然后将其写回商店   作为一个单位。 DbContext在概念上类似于ObjectContext。

使用EF5 +时,实现这两个(工作单元和存储库)不是多余的吗?

有人可以对这个问题有所了解吗?

我打算使用SQL服务器构建一个基于MVC的应用程序,在阅读了大量关于具有单元可测试性的数据访问技术之后,我对上述信息感到很遗憾!

2 个答案:

答案 0 :(得分:1)

我会创建一个Generic存储库,因此您可以比直接模拟Entity Framework的上下文更容易在测试中模拟它。但是,是的,EF 5+确实将这些模式实现为MSDN状态。

这是一个抽象层。存储库模式是对象的集合,是获取对象集合的东西。实体框架知道如何获取对象集合,存储库不知道如何。

实体框架有许多功能,您可以将它包装在存储库或更薄的服务中。如果你对你自己的类练习TDD编码通常比模拟第三方代码更舒服。

Ayende has a blog post about this.

答案 1 :(得分:1)

这取决于项目的复杂性及其要求。例如,这两个问题可能有助于您做出决策:

  1. 您是否会使用除EF以外的任何其他必须使用的数据源?
  2. 将来将EF换成其他ORM或数据源的可能性有多大?
  3. 如果你无法预见到变化,或者你不需要使用的不仅仅是EF,那么它可能不值得这么麻烦。