2012-07-04 16 views
1

我們正在開始研究新的企業應用程序,目前正在考慮技術堆棧。因爲這是我們都知道的,它將成爲.Net/SQL Server。在企業系統中跨越邊界使用EntityFramework

對於不同的平臺,例如Web,Desktop WPF和Mobile,應用程序將具有不同的UI,因爲我們正在考慮創建WCF服務來容納我們的業務/數據邏輯,因此每個UI都可以調用相同的邏輯。

我們也想使用Entity Framework Code First,但在過去當我們嘗試過EntityFramework從來沒有那麼好,當你開始跨越邊界傳遞實體時,例如更改跟蹤丟失,你必須手動開始工作如何更新實體並檢查哪些子實體也被更改。

在WCF/EntityFramework的新版本中解決了這些問題嗎?我們可以通過哪些示例或模式來緩解這一過程?或者我們應該在這種情況下避免EntityFramework?

+0

你爲什麼要通過域邊界傳遞一個活動實體? –

+0

也許我在看這個錯誤,但是如果我想從數據庫中抓取數據並從中使用它,我會從WCF服務調用GetBook以獲取實體,在WebApp中進行更改然後調用WCF服務傳遞修改後的書對象的SaveBook。 – Gavin

+1

看起來你只是想讓你的WCF服務充當數據庫的代理,如果是這種情況,那麼爲什麼服務呢?如果您在服務中執行的邏輯不僅僅是粗俗(例如權限和驗證),那麼您可能不想直接調用實體範圍的保存方法,最好調用UpdateTitle方法。如果您添加了IsDeleted列,您是否希望將其傳播到所有其他系統,我也不完全同意跨越2域限制的模型,因爲它會產生非常緊密的耦合。 –

回答

0

在新版本的 WCF/EntityFramework中解決了這些問題嗎?是否有任何示例或模式,我們可以看看 以緩解這一過程?或者我們是否應該避免在此 方案中使用EntityFramework?

不,他們沒有。如果您不使用EF,並且您將直接使用WCF和SQL,那麼您的WCF將如何知道客戶端上的數據已更改?是的,您必須通過在數據中傳遞一些附加信息或通過檢查數據庫中的當前狀態來實現機制。如果您不將此更改檢測移至客戶端,則EF需要使用相同的方法。

如果您對將更改檢測移動到客戶端感到滿意,並且您的服務層更像是數據庫使用的入口WCF數據服務 - 它們將處理跨越邊界的更改跟蹤,但您的客戶端應用程序必須使用WCF數據服務生成客戶端。