2008-09-10 101 views

回答

1

我做了以下內容:

服務層包含我的業務對象。它通過控制反轉傳遞給知識庫(Castle Windor是我通常的選擇)。存儲庫負責業務對象和實體框架對象之間的映射。

優點:您在對象狀態或EF對象的上下文中沒有問題,因爲您只是在存儲庫端的數據操作期間加載它們。這可以在將它們傳遞給WCF/Web服務時緩解這種情況。

缺點:您正在失去Entity Framework的一些跟蹤功能,您必須手動加載數據對象(例如對象),如果需要手動加載樂觀併發性檢查(例如通過業務對象上的時間戳)。

但通常我更喜歡這個解決方案,因爲它有可能在以後更改存儲庫。它允許我有不同的存儲庫(例如,我的用戶對象實際上使用ASPNetAuthenticationRepository而不是EntityFrameworkRepository),但對於我的服務層來說它是透明的。

關於接口,我將使用來自服務層的業務對象作爲參數對象,並且不要讓這些EF對象離開存儲庫層。 希望有幫助

1

我幾乎是這樣,除了「城堡溫莎」的東西。 看看openticket.codeplex.com