2012-06-27 36 views
3

在博客圈似乎有一个共同的协议,实体框架4的一个重要特性是能够在通用ObjectSets之上创建通用存储库。通用存储库的示例实现基本上是一个ObjectSet的包装器,它只是翻译方法调用。没有有意义的逻辑在进行。经过一番思考,我已经到了自问自己的地步:通用存储库给我的好处是ObjectSet本身还没有提供什么好处? ObjectSet具有所有必需的功能(CRUD)。由于它实现了IEnumerable(甚至IQueryable),因此它提供了所有的Linq扩展,使得它可以非常容易地指定你想要的数据。通过某个IRepository进行绕道转换是什么理由,而不是直接简单地使用IObjectSet作为数据访问层的接口?通用存储库与对象集

感谢和问候,

彼得。

+0

通用存储库带来**没有好处** –

+0

[通用存储库与EF 4.1有什么关系](http://stackoverflow.com/questions/5625746/generic-repository-with-ef-4- 1-what-the-point) –

回答

0

实施存储库模式的原因是为了让自动化单元测试更容易模拟数据源。

如果你的模型上下文实现了一个接口(比如IRepository),并且你的业务逻辑类允许通过构造函数(依赖注入)传递IRepository对象,单元测试可以创建自己的IRepository数据对象并将它们传递给unit试验。这意味着您可以在没有数据库支持的情况下进行单元测试,这比对外部数据库测试更简单,更可靠。

+0

'ObjectSet ' implements'IObjectSet ',我可以不使用这个接口并且实现相同吗? – Peter