我看到幾個與此有關的問題,但我仍然找不到我要找的答案,所以我發佈了我的問題。如果有另一個問題的答案(我只是沒有看到它),請告訴我。Unit Of Work屬於w/EF4,IoC(Unity)和Repository?
我試圖弄清楚我的UnitOfWork屬於哪裏 - 特別是創建時 - 在使用EF4和Unity時使用Repository模式。
基本上,我有一個服務是用來實現我的業務邏輯。這個服務構造函數需要存儲庫,所以服務被注入我的倉庫。然後該服務使用注入的存儲庫對數據存儲執行操作 - 但是我需要將這些包裝在一個工作單元中。
但是,我的工作單元需要注入EF4上下文(或者,在我的情況下,以及上下文的接口 - IObjectContext)。我不確定應該在哪裏創建UoW並將其注入上下文中。
這裏是我能想到的,其中沒有可能的選項看起來是理想的:
附上UOW在服務的構造,因此具有注入瓦特/工作單位,服務這反過來注入w /我的EF4上下文。但是這似乎是錯誤的,因爲我不希望在存儲庫的每個實例上創建我的UoW。
使用container.Resolve進行按需創建,獲取UoW的一個實例,注入我的EF4上下文。這看起來過度必須不斷地打到IoC容器,而不是已經有權訪問UoW。
將上下文直接注入到服務中,允許我創建一個UoW(上下文)。這看起來很糟糕,因爲我已經將上下文暴露給了服務,並且這應該被隔離到存儲庫。
所以我的問題是,是可以接受的這些方法之一,或有另一種方法,我沒有想到的?
在此先感謝。
感謝您的留言。這是有道理的,我會在週末嘗試這種方法。我可能會跟進幾個問題,但從概念上講,這聽起來很合理。 – 2011-02-18 16:20:59