4

Ayende前段时间写了一套关于如何Repositories are the new Singletons模式的文章。我已经阅读了他们的所有内容,我认为并且我同意他的几点看法。大多数情况下,我看到有数十个存储库的项目,这些存储库只是为了抽象一个ORM的用法,它已经抽象了数据库访问。存储库是单元测试必需的东西吗?

避免他们之后,我开始有一些问题,因为一些奥姆斯是难以模拟软件件,或至少EF是隔离我的UT代码。 Ayende的一些项目使用内存数据库进行测试,但即使它工作正常,我也不想这样做。

所以,这是我的问题:我不喜欢有几十个典型的资源库,也没有通用的存储库既不不过,我想有一个简单的方法来隔离我的代码。

当前版本库仅对UT有用吗?

注意:我说的数据库访问,不是抽象其他类型的如远程服务的数据源。

回答

5

对我来说,因为他们隔离业务逻辑代码的持久性相关的代码库(或DAO的)是有用的。

之一(期望的)的副作用是,无论是业务逻辑代码和数据访问代码变得更容易测试。

另一个期望的副作用是,持久性相关的方法是由多个业务逻辑服务容易resusable。

+1

我认为OP是在ORM之上提出一个关于使用存储库的问题。 ORM通常会提供一些你想要的现成副作用,但可能很难进行单元测试(EF)。 –

+0

这是正确的,我的问题是关于ORM上的存储库。 – lontivero

+3

我的答案是关于ORM上的仓库。您仍然必须使用ORM编写查询,并且应该测试这些查询。 –