2011-12-15 59 views
0

我在C#.NET中有一個桌面項目,它的結構爲:gui,業務層和數據訪問層。每個業務層類表示數據庫的一個實體。我正在使用linq來訪問數據庫。但是今天項目實施的方式不允許以原子方式進行許多操作,我需要在業務層完成這些操作。最佳項目模式在業務層有一個「unitOfWork」

我搜索了一些設計模式,並找到了unitOfWork,它使數據層中的所有操作都處於同一個上下文中,並且在提交所有更改之後。這將使操作成爲原子。但問題是,我想要做的操作需要在之前進行驗證,這意味着,而不是從數據層調用方法,我需要從業務層調用方法進行驗證。業務層中的這個調用會創建另一個unitOfWork,並因此創建另一個上下文來打破我正在嘗試執行的更大操作的原子性。

現在的問題是:在同一個linq上下文中,從業務層調用一個或多個業務層方法的最佳項目模式是什麼?這樣做將是

回答

1

方式一:

  • 創建於業務層上的服務層。
  • 這個服務層包含2個服務(可以是真正的WCF服務或只是普通的C#類):一個用於讀取,一個用於寫入。
  • 閱讀服務不是事務性的,它只包含執行查詢(即讀取數據)的方法。
  • 寫作服務是交易性的;它的所有方法或者創建一個事務上下文或者遵循工作單元模式。
  • 寫入服務在對其業務層執行C/U/D操作之前訪問讀取服務進行驗證。
+0

這似乎是好的。這個項目模式是否有名字?我想要更多地瞭解這個?謝謝! – joaocarlospf 2011-12-16 15:01:26

相關問題