2011-03-08 82 views
3

我在EF 4中使用UnitOfWork模式,並且只是想知道EFUnitOfWork的實現應該在哪裏生存?它是否應該存在於Repository Layer中?我在域層中擁有所有的接口。這聽起來正確嗎?實體框架UnitOfWork

我正在使用Ninject來爲IUnitOfWork注入存儲庫。

我想這真的沒有關係,因爲你不會真的測試你的EF特定的存儲庫嗎?

另一種選擇是讓它生活在EF模型和上下文所在的數據層中。

通過將它放入存儲庫層,該層現在需要對System.Data.Entity的引用。不好還是OK?

回答

1

繼DDD之後,您通常需要在解決方案中使用ProjectName.Core項目。在該項目將如下結構: - >庫(所有 資源庫接口)

  • ProjectName.Core - >的DomainModel

  • ProjectName.Core -

    • ProjectName.Core>基礎架構 - > IUnitOfWork(uow接口)

    • ProjectName.Core - > Infrastructure - > DtatAccess(存儲庫實現和所有的 數據庫相關的文件,包括UOW執行)

    有的時候,如果該項目足夠大,我就多了一個項目添加到我的解決方案稱爲ProjectName.Infrastructure.DataAccess並放置在該項目中的所有數據訪問的實現。

  • 0

    由於可讀性/理解的原因,實現通常位於Repository層。我沒有發現任何問題與您的接口在域層。

    ,你甚至可以有如下

    - Domain 
        ->Interfaces 
        ->Repository 
         -> Actual Implementation 
    

    類似的事情但是就像你說的,它真的不無論身在何處的實際執行。但是,如果你正確地組織結構,其他人很容易理解流程。

    +0

    我不確定你會希望在領域層的實現,因爲那時它需要引用System.Data.Entity dll,並且我希望我的領域層無視EF。正確? – Sam 2011-03-08 02:59:48