簡體   English   中英

使用winforms和asp.net進行EF模型綁定

[英]EF model-binding with winforms and asp.net

我在一個應該有Web界面以及Winforms界面的項目中。 它可能將從WinForms開始,將來我們將添加ASP.NET MVC Web界面。

我有使用ASP.NET MVC和EF6的經驗,但是在閱讀了如何將EF POCO實體綁定到https://msdn.microsoft.com/zh-cn/data/jj682076.aspx中的 winforms控件后,我意識到它需要修改實體定義(代碼優先),以公開Winforms實現的詳細信息。

有什么辦法可以從模型層隱藏winforms的依賴關系嗎?

我建議在所示的場景中,幾個不同的前端項目使用存儲庫代碼,應該有一個公共的中間層,可以從UI提取數據庫。

將您的winforms控件綁定到中間層對象。 它應該完全不了解數據層。

從定義的角度考慮,並考慮到您已經在使用MVCMVVM ,應該記住POCO並非旨在綁定到視圖(完全是任何視圖)。 這里周圍有幾個職位,甚至問題在計算器上,就像兩個: 一是 | 第二 | (以及許多其他)。

考慮到該聲明,您應該設計一個ViewModel ,將您的POCO映射到屏幕上的有用項目( HTMLWinforms ,本機移動設備或任何其他項目),並避免使用數據注釋(將它們保持在最小數量)。

您可能需要兩個ViewModel庫,一個用於MVC ,另一個用於Winforms ,每個都有它自己的配置和全部,但是由於它更多地涉及數據傳輸而不是業務邏輯,所以這很好。

要將ViewModels以更好的方式(又稱為自動)連接到POCO ,反之亦然,請仔細研究映射庫,例如AutoMapper或其他。 我喜歡AutoMapper因為有了它,我可以在不同的程序集中使用代碼優先的方法構建映射定義,從而使所有內容真正保持干凈並避免數據注釋(我討厭)。

在通常情況下,獲得通用實體模型不是問題。 實際上,為了使導航屬性在WinForms中具有可綁定性,MS建議實現自動提供IBindingList集合的IListSource接口。 但是,可以將ObservableCollection類型用於適合Web應用程序的導航屬性,並在WinForms應用程序中使用IBindingList(如果使用的是MVVM模式,最好在視圖模型中執行這種轉換)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM