2012-05-13 31 views
5

こんにちは私はMVVMを学ぼうとしていますが、(データ)モデルがVM(ViewModel)と通信する必要がある部分を中心にしています。MVVMのデータベースを持つモデル

私はクラスの人を持っているので、(Raiseproperty(INotifyPropertyChanged)を使って)たくさんのプロパティを持っています。今度はそのクラスをVMに接続してViewModelPersonという新しいクラスを作成しますが、私は主にPersonのリストを必要とします。これは1人しか表示できないので、リストはデータベースから集められます(SQLite )とDapper。ビューモデルや(データ)モデルで、観測可能リストを作成する必要があるのはどこですか? ViewModelではViewにバインドする必要があると思うが、そこからViewModel ObservableCollectionにデータベース情報を挿入する場所はどこですか? ViewModelPersonsListコンストラクタのようなコンストラクタに入れますか?SQlite DBからすべての人物を集めてリストに挿入するクエリがありますか?

私がMVVMモデルを理解できないことが分かっていたら、何か不明な点がある場合は質問してください。私は自分の質問をよりよく説明しようとします。

マキシム

+0

私の答えはあなたに全く役立ちましたか? –

答えて

1

ビュー - >表示モデル - >ビジネスロジック - >データ・レイヤー - > DB

OR

ビュー - >表示モデル - > WCF/Webサービス - >ビジネスロジック - >データレイヤー - > DB

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

更新 Personオブジェクトは同じように動作します。 VMは、更新されたオブジェクトでBLLを呼び出すだけです。

1

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

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

SQL Server Compact Editionを使用する場合は、データベースgenerated for youを使用することもできます(これはSqliteでも可能ですが、より多くの努力が必要です)。

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

DAL経由で、またはViewModelから直接データを処理することができます。

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

関連する問題