【发布时间】:2015-06-08 10:20:57
【问题描述】:
我们的一位开发人员创建了一个新项目,我现在正在他不在的情况下进行一些工作。我发现他对存储库做了一些特别的事情。
我们正在使用实体框架,并且通常情况下,我们将它放在实现 IRepository 接口的 Repository 类后面,以便可以模拟它以进行单元测试。
他所做的是在IRepository 上放置了各种方法,这些方法不会在Repository 本身上调用任何东西,而是将继承树向下调用到DbContext。
所以IRepository 有:
int SaveChanges();
而Repository 是这样构建的:
public class Repository : MyEntities, IRepository
但它没有SaveChanges 方法。而是将调用传递回自动生成的MyEntities:
public partial class MyEntities : DbContext
一直到DbContext。
我已经处理了很多 EF 存储库层,但我以前从未见过这样做过。我可以看到这样做的好处:它节省了大量的样板代码。但我过去从未遇到过它的事实让我感到不舒服:大概有一个很好的理由说明这不是常见的做法。但我看不出有什么缺点。
那么:这是个好主意吗?如果没有,为什么不呢?
【问题讨论】:
-
这是一个糟糕的想法,一定会导致您的
DbContext被滥用
标签: c# entity-framework repository repository-pattern