6

こんにちは私はMVVMを学ぼうとしていますが、いくつかの部分、主に(data)ModelがVM(ViewModel)と通信する必要がある部分については少しわかりません。

だから私はクラスの人を手に入れました、それはたくさんのプロパティを持っています(Raiseproperty(INotifyPropertyChanged)で)。そのクラスをVMに接続するにはどうすればよいですか?新しいクラスを作成してViewModelPersonと呼びますが、主に個人のリストが必要です。1人だけを表示するのはちょっと役に立たないので、リストはデータベース(SQLite )Dapperを使用します。ビューモデルまたは(データ)モデルのどこで監視可能なリストを作成する必要がありますか?ビューにバインドする必要があるので、ビューモデルで考えますが、データベース情報をビューモデルObservableCollectionのどこに挿入しますか?SQlite DBからすべての人を収集してリストに挿入するクエリを持つViewModelPersonsListコンストラクターのようなコンストラクターに入れますか?

私がMVVMモデルを理解できないところを理解していただければ幸いです。不明な点がある場合は、質問してください。私の質問をより適切に説明しようと思います。

マキシム

4

2 に答える 2

2

表示->モデルの表示->ビジネスロジック->データ層->DB

また

表示->モデルの表示->WCF/Webサービス->ビジネスロジック->データ層->DB

ビューモデルにPersonオブジェクトのリストが必要な場合は、ビジネスロジックレイヤーを呼び出す必要があります。BLLは、データレイヤーの呼び出しに必要なロジックを実装します。BLLはリストを返し、VMはバインディングを介してリストをビューで使用できるようにします。

Personオブジェクトの更新も同じように機能します。VMは、更新されたオブジェクトを使用してBLLを呼び出すだけです。

于 2012-05-14T00:13:53.860 に答える
1

あなたが Sqlite について言及したのを見たので、小さな WPF プロジェクトについて話していると思います。

データベースにマッピングされたエンティティ フレームワーク コード ファースト モデルを作成することをお勧めします (これを読んでください)。

SQL Server Compact Edition を使用する場合は、データベースを生成することもできます (これは Sqlite でも実現できますが、より手間がかかります)。

とにかく、生成された (またはコード化された)ものをUoWオブジェクトDbContextとして使用します。

DAL を介して個別にデータを処理するか、ViewModel から直接処理するかを選択できます。

いずれにせよ、TEntity を公開するものと TEntity のコレクションを公開するものという 2 つの ViewModel 基本クラスを作成すると言えます。VM で DAL アクションを実行することを選択した場合は、ベース CollectionViewModel に CRUD メソッドを追加して手動で呼び出すか、コマンドを公開してユーザーに呼び出させることができます。

于 2012-05-14T00:35:37.880 に答える