2010-06-30 26 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

相關問題