2013-02-05 63 views
0

我即將實現MVC3的工作模式單元。有沒有人有沒有使用EF的多個存儲庫的工作單元很好的例子?

我:

MVC服務層(BLL)

庫層

多種類型的數據庫

我希望我的服務層,以獲得IUnitOfWork通過我的國際奧委會容器傳遞給它。 (這很容易,而不是這個問題的一部分)。

所以我的服務層將做到這一點:(注:這是僞代碼)

(using unitOfWork) 
{ 
    ProductSqlRepository.Update(); 
    PersonOracleRepository.Update(); 
    IUnitOfWork.Commit(); 
} 

所有的樣品,我可以找到使用EF。雖然我的一個倉庫可能會使用EF其他人可能不會。

我的問題是的話,我可以使用工作單元模式跨多個存儲庫可以坐在上面不同類型的數據庫(即... EF,甲骨文...等)

所以,如果我想在ONE工作調用中將更新包裝到SQL數據庫和Oracle數據庫中,是實現這一目標的單位。

正如我所提到的,我能找到的所有例子都是100%EF解決方案,我需要混合搭配。

感謝 拉斯

回答

1

的範圍的UnitOfWork基本上已經在MVC,因爲所有你的邏輯的定義是一個動作內完成。我見過的常見模式(以及我最終在應用程序中完成的工作)是通過全局註冊到應用程序的屬性處理您的工作單元,並處理您需要的任何工作邏輯單元(事務等)在該屬性的OnActionExecutingOnActionExecuted中。有幾點需要注意,例如確保該動作不是兒童動作並檢查ModelState錯誤,但有一些在線示例。另外請注意,如果您沒有在視圖中專門使用viewmodels,那麼在您的工作單元範圍關閉後,您可能會遇到某些框架的問題,即在視圖中延遲加載數據。

我的項目使用nHibernate,我用這兩個職位作爲我的實現的靈感。希望他們也會給你一些想法。

http://ayende.com/blog/4809/refactoring-toward-frictionless-odorless-code-what-about-transactions

http://slynetblog.blogspot.ca/2011/04/lightweight-nhibernate-and-aspnet-mvc.html

+0

謝謝您的回答Yarx – RuSs

相關問題