我在解決方案中有三層:數據訪問(DA),業務邏輯(BL)和WCF契約邏輯(CL) - 按順序堆疊。通過層傳遞類型
在DA中存儲了一個實體框架模型,其中包含一個類型爲SQL的表格。我想要在CL中訪問這種類型的堆棧,但我不想犯下不切實際的做法,讓CL直接與DA進行交談,而是將CL指向BL,將BL指向DA--如果這樣做有道理。最簡單的前進方式是合併BL和CL層,但假設我想在我的解決方案中保留指定的分離,我怎麼能實現我之前說過的?
我曾想過以下解決方案:
- 繼承了DA型到BL創建一個新的類型。
- 在CL中創建一個新接口作爲BL中新類型的手動模板。
- 使用接口在CL中創建新類型。
上述解決方案的問題是,如果更新發生在DL中的類型中,CL中的接口不再是真實的並且可能會中斷應用程序。我想要一個自動更新所有圖層而無需人工干預的解決方案。
任何真棒建議?
您的實體應該是您的域模型的一部分,例如業務層。任何其他層都可以引用業務層,而不是其他方式。因此,請將數據層引用業務層 - 將EF實體放入業務層。請參閱http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ – Maarten
除了下面的答案之外,我還建議您使用automapper將EF實體轉換爲業務邏輯中的DTO(數據傳輸對象)。您的WCF服務的使用者一定不知道您的EF實體。 –