【问题标题】:Generic Repository vs. ObjectSet通用存储库与 ObjectSet
【发布时间】:2012-06-27 14:22:14
【问题描述】:

在博客圈中似乎有一个共同的共识,即 Entity Framework 4 的一大特点是能够在通用 ObjectSet 之上创建通用存储库。通用存储库的示例实现基本上是围绕 ObjectSet 的包装器,它只是转换方法调用。没有有意义的逻辑在发生。经过一番思考后,我开始问自己:通用存储库给我带来了什么好处,而 ObjectSet 本身还没有提供? ObjectSet 具有所有必需的功能 (CRUD)。因为它实现了 IEnumerable(甚至是 IQueryable),它提供了所有的 Linq 扩展,可以很容易地准确地指定你想要的数据。究竟是什么证明了通过一些 IRepository 绕道而行,而不是简单地将 IObjectSet 直接用作数据访问层的接口?

感谢和问候,

彼得。

【问题讨论】:

标签: entity-framework-4 repository objectset


【解决方案1】:

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

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

【讨论】:

  • ObjectSet<T>实现IObjectSet<T>,能不能不用这个接口也一样实现?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多