簡體   English   中英

WPF和ASP.NET MVC的通用模型

[英]Common models for WPF and ASP.NET MVC

我將構建兩個應用程序。 其中之一在WPF中,第二在ASP.MVC中。 我決定創建一個Web服務,它將成為數據庫和應用程序之間的一層。 我不想在我的應用程序中使用實體模型。 我想創建輕量級模型,將其發送到Web服務,然后將其轉換為實體模型。 我的問題是如何為WPF和MVC創建通用模型? 我不知道該怎么做,因為我想為MVC使用數據注釋屬性,並為WPF實現INotifyPropertyChanged接口。 我認為還會有其他事情。 有一些好的方法嗎? 還是不可能?

嗯,首先,將實體暴露在DAL之外沒有任何問題。 他們只是課程。 他們沒有什么特別的。 使它們完成數據庫工作的原因是它們包含在DbContext類中,並且您實際上可以使用流暢的config將所有注釋和其他配置移到上下文中,並且具有原始類,而沒有任何外部影響。

另外,總有一種趨勢是向實體類添加過多的配置。 他們只應具有在數據庫級別上重要的內容 諸如[EmailAddress]內容指示如何在發布時驗證屬性的方法在實體類上不合適。

也就是說,將諸如[EmailAddress]和其他特定於視圖的內容放置在視圖模型上。 哪個應該可以消除您其余的困惑。 需要實現INotifyPropertyChanged嗎? 使用視圖模型執行此操作。 並映射您的實體數據。

只是不喜歡我見過的人所做的那樣,所以創建了一個DTO類,該類基本上是您的實體類的精確副本,只是將數據從應用程序中的一個地方轉移到另一個地方。 那是沒有用的,只會增加需要維護的其他內容以及您的應用需要執行的其他工作,而沒有任何好處。 實體類是DTO。 從您的服務中將其返回,然后映射到您的視圖模型。 做完了

為了澄清最后一點,與WPF / MVC應用程序相關的類應該是它們的視圖模型,而這些模型對於該應用程序是唯一的。 WPF中需要什么以及如何將實體數據映射到WPF應用程序中的邏輯,或從WPF應用程序映射實體數據的邏輯。 讓代碼創建類實例直接在WPF應用中直接由某些本應與獲取數據有關的服務創建,這將是100%不適當的。 這將違反單一責任原則。 讓每件事做它打算做的事情。 換句話說,將WPF代碼與WPF代碼保持一致。 您仍然可以使用一些庫來處理數據層和WPF視圖模型之間的映射,但這應該是單獨的事情,在WPF應用程序中只是一個依賴項。

暫無
暫無

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

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