我应该将我的上下文注入我的存储库类吗?

时间:2012-08-30 20:57:51

标签: c# asp.net asp.net-mvc-3 entity-framework ninject.web.mvc

我有许多类似于以下的存储库类:

public class ProfileRepository : IProfileRepository{
     private MyEntities myEnt = new MyEntites();
     ...
}

MyEntities类是使用Entity Framework在我的.edmx文件中生成的实体。我经常在我的所有存储库类中使用此对象,并且所有存储库类都注入到我的控制器中。将myEnt对象注入到我的存储库类中是否有一种方法/最好的做法,它是否也会以相同的方式使用并发性?

2 个答案:

答案 0 :(得分:0)

MyEntities是你的背景,我假设。如果是,那么是的,将您的上下文注入您的存储库是一个很好的做法。这样,您可以模拟您的存储库,然后您的单元测试可以测试功能,而不必担心数据库(或其他持久性存储)连接。

答案 1 :(得分:0)

答案是肯定的。

基本原理如下:通过在存储库中创建上下文实例,您不允许调用者控制上下文的生命周期。

例如,在基于Web的方案中,您不希望在每次创建存储库类的实例时重新创建上下文。相反,只要请求的处理持续在服务器上,您就希望上下文存在。