2010-11-15 90 views
1

讓我設置我的LOB場景。我應該複製我的實體模型嗎?

我正在重寫我們的核心業務應用程序。要求是我創建一個內部可用的應用程序(我想使用Silverlight),我們的員工每天使用它。我還需要提供一個可用於輸入訂單,獲取發票等的SOAP服務。

我也會這樣做,所以當我在新的SQL Server數據庫中更新記錄時,我需要請確保更新我們的傳統SQL Server。

因此,創建一個將從新的SQL服務器提取數據以及將數據寫回到2個數據存儲的DAL當然有意義。

創建可由Silverlight/RIA和WCF Web服務使用的BLL也是有意義的。

我已經在自己的項目中創建了新數據庫的數據實體,並在所有其他項目中使用它。這裏的問題是RIA似乎要求我在ASP.Net項目中創建它,以獲取Silverlight的元數據。如果沒有這個,我需要手動重新創建Silverlight的元數據才能正確訪問它。

我的問題是,我應該創建實體模型的重複?一個用於RIA,另一個用於其他任何用途?有一個更好的方法嗎?我應該放棄使用RIA並讓Silverlight訪問WCF服務?或者我應該繼續在RIA中複製元數據?

+0

順便說一句,2/13標爲回答的問題有點低,你可能想要改進:) – Basic 2010-11-15 22:57:14

+0

哎呀....這種新的。我會通過並標記它們。感謝您的領導! – Scottie 2010-11-15 23:09:13

回答

1

我們使用實體直接引用存儲和數據傳輸對象(DTO),它們在BLL和WCF/GUI /之間來回傳遞時幾乎是相同的。我們使用地圖這AutoMapper意味着有很少的額外工作,但我們並不擔心,如果給定的實體附加到上下文/跟蹤狀態修改/ etc的2間...

編輯:你絕對要儘可能保持您的代碼爲DRY。就我個人而言,我會考慮在BLL上使用DTO,並且要麼在DAL中配置2套存儲庫(一個RW,只有一個W)。或者甚至有處理2個商店本身的數據集的元庫。

如果你還沒有使用它,Unity和IoC在這裏會對你有實質的好處。您可能還想使用其中一種模塊化代碼模式,以允許您以不同模式註冊[n]個數據存儲區,這樣當您最終想要淘汰舊商店時,無需做太多工作。

我還懷疑你是否實體需要在ASP.Net中定義 - 你可以簡單的能夠從你的實體/ DTO項目中引用的DLL適當,並添加適當的標記/配置

+0

只需重新閱讀Q,這可能不是合適的答案 - 現在編輯 – Basic 2010-11-15 22:57:40

相關問題