2つのアプリケーションを構築します。 WPFで1つ、ASP.MVCで2つ目。私は、データベースとアプリケーションの間のレイヤーになるWebサービスを作成することに決めました。私は自分のアプリでエンティティモデルを使用したくありません。軽量モデルを作成してWebサービスに送信し、エンティティモデルに変換する必要があります。私の質問は、WPFとMVCの共通モデルを作成する方法です。 MVCのデータ注釈属性を使用し、WPFのINotifyPropertyChangedインターフェイスも実装したいので、これを行う方法はわかりません。他にも思うことがあります。それを行うための良いアプローチがありますか?それとも不可能ですか?WPFとASP.NET MVCの共通モデル
答えて
まずはエンティティクラスをDALの外に公開することには何も問題ありません。彼らはただのクラスです。彼らには特別なものは何もありません。彼らがデータベースにするものは、DbContext
クラスに含まれています。実際には、すべての注釈やその他の設定を流暢な設定を使ってコンテキストに移して、そこに外的な影響を与えることなく素朴なクラスを持つことができます。
また、エンティティクラスにあまりにも多くの設定を追加する傾向があります。データベースレベルで重要なものはです。ポストでどのようにプロパティを検証するべきかを指示するようなものは、エンティティクラスでは不適切です。[EmailAddress]
つまり、[EmailAddress]
などのビュー固有のものを配置する場所はビューモデルにあります。あなたの混乱の残りの部分をかなりクリアするはずです。 INotifyPropertyChanged
を実装する必要がありますか?ビューモデルでそれを行います。エンティティデータとエンティティデータのマッピングを行います。
はちょうど私が何人かの人々がそう見てきたように行うと、単にあなたのアプリにある場所から別の場所にデータを転送するために、基本的にはあなたのエンティティクラスの正確なコピーだDTOクラスを作成しないでください。これは役に立たず、メンテナンスや追加作業を追加するだけで、アプリは何のメリットも払わずに実行する必要があります。エンティティクラスはDTOです。あなたのサービスからそれを返し、あなたのビューモデルにマップします。完了しました。
ただ、最後のビットを明確にするために、あなたのWPF/MVCのアプリには関係のクラスは、そのビューモデルであるべきであり、それらのアプリに固有になります。 WPFで必要とされるもののロジックとWPFアプリケーションに属するエンティティデータのマッピング方法最初の場所でデータを取得を気にするはずのいくつかのサービスで作成されるようにWPFのアプリでdirectyを使用するために、クラスのインスタンスを作成するコードを持っているために、100%不適切です。これは、単一責任の原則に違反します。それぞれのことを、それがするように設計されたものにしましょう。言い換えれば、WPFコードでWPFコードを保持します。あなたはまだ、データ層とあなたのWPFのビューモデルの間のマッピングを扱ういくつかのライブラリを持つことができ、それは、あなたのWPFアプリケーションに依存になり、別のものでなければなりません。
- 1. ASP.NET MVC - ビューに通知するモデル?
- 2. ASP.Net MVC - モデルとユーザーコントロール
- 3. ASP.NET MVCモデルとビジネスオブジェクト
- 4. WPFの共通ツールチップスタイル
- 5. ASP.net MVC ViewのモデルとViewData.Model?
- 6. ASP.NET MVCとWebAPI共有トークン
- 7. ASP.NET MVCと複雑なモデル
- 8. ASP.NET MVC 3モデルとビューモデルクラス
- 9. ASP.NET MVC 3ビューとモデル
- 10. ASP.NET MVCモデルID
- 11. ASP.NET MVCモデルで
- 12. asp.net共通のヘルパーライブラリ
- 13. 統合共通WPFのスタイル
- 14. WPF共通ウィンドウの動作
- 15. MVCジェネリックリポジトリ共通dataColumn
- 16. UIHint MVC共通ドロップダウンリスト
- 17. 複数のビュー間の共通モデル
- 18. ASP.net mvc共有クラスライブラリ
- 19. 複数のASP.NET MVCコントローラ間で共通の機能
- 20. ASP.NET MVC 3のビューで共通のデータを扱うアプローチ
- 21. ASP.NET MVC - Intellisenseはモデル
- 22. MVC共通の機能
- 23. WF、WPF、Silverlight共通イベントハンドラ
- 24. ASP.NET MVC:モデルとMembershipUsersの関係
- 25. ASP.NET MVC - マスターページとビューページの異なるモデル
- 26. asp.net MVC ajax.begineform ONSUCCESSイベントとモデルの検証
- 27. asp.net mvcでのリソース共有
- 28. asp.net-mvcの共有メニューコード
- 29. モデルのASP.NET MVC 4のブートストラップモーダル
- 30. ASP.NETの共通コントロールのソースコード
INotifyPropertyChangedのは、WPF(またはUI)関連のインターフェイスではありません。デスクトップおよびWebプロジェクトと一般的なモデルおよびエンティティオブジェクト用に異なるviewModelクラスを作成します。 –