2010-12-10 120 views
2

我有一個使用Ado .net實體框架進行數據庫操作的Web服務(WCF)。使用此框架生成所有實體。所以我的問題是我可以使用由Entity框架生成的這些模型到我的MVC應用程序只引用一個Web服務?如果它沒問題,那麼它會停止在MVC框架上編寫Model,這樣可以節省大量時間。MVC/WCF和Ado net實體框架

總結並說清楚, 可以使用wcf代理客戶端作爲mvc的視圖模型。

回答

2

是的,絕對地,爲您的WCF服務添加一個服務引用,定義一個代碼庫接口,它代表您可以使用模型類執行的操作,並且在此接口的實現中,只需使用自動生成的代理客戶端調用服務。

現在剩下的就只有視圖模型,它將填補來自WCF服務的視圖和模型之間的空白。

實際上,在設計正確的ASP.NET MVC應用程序中,控制器永遠不應該知道數據來自何處:它可能是SQL數據庫,某個ORM框架,遠程服務......控制器應該工作的所有通過此合同,您可以在視圖模型和實際模型之間定義(存儲庫)和映射。實際的數據操作應該通過存儲庫的特定實現來執行。

+0

感謝您的回答。我可以將這些EF生成的模型作爲「視圖模型」直接使用到我的mvc應用程序中嗎? – crypted 2010-12-10 17:45:20

1

將生成的實體模型移動到單獨的程序集並從兩個項目中引用程序集。

+0

他不必這樣做。 – Aliostad 2010-12-10 14:21:03

1

是的,你可以。 MVC默認刪除特定於EF的properties

在第一部分中,我們定義其拉 右出的邏輯我們默認 對象模板 ShouldShow方法。你會發現有 提System.Data.EntityState (在 System.Data.Entity.dll定義),用來 到過濾掉某些實體框架 屬性。如果您未使用Entity Framework,則可以安全地刪除該行 。你會知道你不需要 行,如果你不參考 System.Data.Entity.dll將 導致這個代碼炸起來像 鋁箔在微波爐。

+0

謝謝,但我更關心由EF生成並在wcf Web服務上公開的模型(代理客戶端),我可以在我的mvc Web應用程序中將它們用作「視圖模型」。 – crypted 2010-12-10 17:49:51