2011-02-27 6 views
1

私はService/Repository/EF4/POCOクラステクニックでEntity Framework 4を使用していますが、View Modelバインディングに関する質問があります。モデルを見るバインディング/オートマッパー

クラスをビューモデルにマップし、ビューに必要なフィールドのみを取り、それをクラスの新しいインスタンスにマップしてデータベースに保持する場合、ビューで使用されていないフィールド上書きされないように?

答えて

1

これは、通常、まずエンティティをdbからロードし、このエンティティに入力データをマージすることによって実行されます(ObjectContextは変更を追跡し、変更されたプロパティのみを更新します)。あなたが更新SQLコマンドに含まれる変更は唯一のエンティティのプロパティに名前を付けて保存するときに今

context.MyEntities.Attach(entity); 
context.ObjectStateManager.GetObjectStateEntry(entity).SetModifiedProperty("Name"); 

:別のアプローチは、手動で状態管理に変更されたプロパティを設定されています。

私はhereと表示されたrepostioryチェックの高レベルの例を使用しています。

+0

ありがとうございます!これは動作しますが、一般的なリポジトリではうまく動作しないようです。あるいは、私はまだコンセプトを完全に把握していないかもしれません。 – Sam

+0

@Sam:リンクで提供される例は、汎用リポジトリ用に変更できます。しかし、ジェネリックリポジトリは誰もが実装したいと思っているものですが、同時にほとんどの時間は機能しません。あなたはいつも特別な要件を持つ実体を持っています。私は特定のリポジトリの基本クラスとして汎用リポジトリを使用しています。 –

関連する問題