2011-10-10 24 views
0

我正在使用Entity Framework,Linq,WCF和MVC3。該系統已被拆分爲層級方法,並且我正在使用WCF,因爲多個系統將使用相同的數據訪問和業務邏輯。WCF AND MVC3,系統架構。傳遞一個視圖模型與WCF?

數據訪問 - 商業邏輯 - API(WCF) - 服務類 - MVC

對於我的MVC應用程序的每個視圖,LINQ查詢需要被寫了訪問數據庫和顯示摘要不同的表,如下圖所示。

 var users = 
      (from u in _userRepository.All 
      from upd in u.UserPropertyData.DefaultIfEmpty() 
      from upd1 in u.UserPropertyData.DefaultIfEmpty() 
      where (upd.UserPropertyType.Alias == "Forename") && (upd1.UserPropertyType.Alias == "Surname") 
      select new UserModel 
      { 
       Id = u.Id, 
       Forename = upd.Value, 
       Surname = upd1.Value, 
       EmailAddress = u.Email 
      }); 

這種查詢是我的業務邏輯部分,並通過在我的WCF API一個的usermodel到傳遞模型我的控制器,然後在視圖中顯示我的服務類。

這種方法看起來不正確,因爲數據訪問和業務邏輯通過傳回'查看模型'而與MVC耦合。如果有人能想到更好的方法,我將不勝感激。

回答

0

如果我理解正確,那麼您是通過WCF進行數據訪問的?如果是這樣,我會通過WCF服務返回業務數據(類),通過MVC應用程序的服務類映射到ViewModel類,然後將所有視圖模型傳遞給控制器​​/視圖。 如果我誤解了你的問題,請糾正我。

+0

您的意思是通過WCF服務從上面的linq查詢返回選擇。 Linq查詢不能通過WCF發送嗎?例如,我不能在客戶端建立查詢? – ministrymason

+0

是將所有的數據訪問包裝在WCF服務中。這樣,所有的系統都可以使用這些wcf服務從數據庫中檢索sata,如何使用/操作數據將完全取決於系統(在mvc應用程序中,數據將被映射到視圖模型以便在意見) – Duy

+0

好的。但對於某些頁面,通過WCF服務接收到的數據將與視圖中顯示的「視圖模型」相同。通過WCF獲取'View Model'似乎不正確通過WCF – ministrymason