我有一个ObjectContext和一个传递给ObjectContext的Repository。然后我使用存储库进行调用。我想使用依赖注入来不必总是实例化ObjectContext和Repository。我将上下文/存储库分组到什么“对象”?
using (MOSContext db = new MOSContext())
{
IUserRepository users = new UserRepository(db);
// Do stuff with users.
}
这样做不好吗?理想情况下,我希望能够创建像ObjectContext一样的“某个对象”,但是具有所有存储库接口的访问权限:
using (IDAL dal = IoC.Resolve<IDal>())
{
dal.Users.GetById(myId);
dal.Profiles.Add(new Profile());
}
然后使用DI,我可以为每个存储库接口注册上下文和所有实现。
答案 0 :(得分:1)
是的,在控制器中新建OC是不好的。是的,最好使用DI来返回不严格依赖于EF的接口实例。
每个请求应该有一个OC 的实例,而不是每个方法。大多数DI容器都具有开箱即用的请求范围生命周期功能。