代码之家  ›  专栏  ›  技术社区  ›  TheCloudlessSky

我们应该在Controller中实例化数据上下文和存储库吗?

  •  0
  • TheCloudlessSky  · 技术社区  · 14 年前

    我有一个ObjectContext和一个传递ObjectContext的存储库。然后我使用存储库进行调用。我想使用依赖注入来避免总是实例化ObjectContext和存储库。我将上下文/存储库分组到哪个“对象”中?

    using (MOSContext db = new MOSContext())
    {
        IUserRepository users = new UserRepository(db);
    
        // Do stuff with users.
    }
    

    这样做不好吗?理想情况下,我希望能够创建类似ObjectContext的“some object”,但有访问器 存储库接口:

    using (IDAL dal = IoC.Resolve<IDal>())
    {
        dal.Users.GetById(myId);
        dal.Profiles.Add(new Profile());
    }
    

    然后使用DI,我可以注册每个存储库接口的上下文和所有实现。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Craig Stuntz    14 年前

    是的,在控制器中安装新的接触网是不好的。是的,最好使用DI返回一个与EF没有严格绑定的接口实例。

    你应该有一个OC实例 ,不是每个方法。大多数DI容器都有一个现成的请求作用域生存期特性。