2010-06-30 64 views
0

我有一个ObjectContext和一个通过ObjectContext传递的存储库。然后我使用存储库进行调用。我想要使​​用依赖注入并不总是必须实例化ObjectContext和Repository。什么“对象”我会分组的上下文/库?我们是否应该在Controller中实例化数据上下文和存储库?

using (MOSContext db = new MOSContext()) 
{ 
    IUserRepository users = new UserRepository(db); 

    // Do stuff with users. 
} 

这样做不好吗?理想情况下,我希望能够创造“一些对象”,它如同ObjectContext的,但访问器来所有库接口:使用DI,我可以注册上下文

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

然后和所有的实现为每个存储库接口。

回答

1

是的,这对控制器中新的OC不好。是的,最好使用DI来返回一个不严格依赖于EF的接口实例。

对于每个请求,您应该有一个OC 的实例,而不是每个方法。大多数DI容器都具有开箱即用的请求范围生命周期功能。

+0

但是,OC应该拥有访问存储库的属性吗?如果不是,他们应该坐什么课?或者我应该在第一块代码中做什么,只能使用DI? 此外,我试图在IoC上展示我的过程。会有'使用'声明是否足够? – TheCloudlessSky 2010-06-30 13:48:02

+0

简短的回答是这样的:去购买Mark Seeman的* .NET依赖注入*(Manning Books)。它*彻底*回答你的问题。它也恰好使用MVC和EF作为其示例应用程序。 – 2010-06-30 14:55:29

+0

有没有免费的资源可以指导我?我是一名学生,实际上并没有很大的预算。 – TheCloudlessSky 2010-06-30 16:12:25

相关问题