現在のプロジェクトでは、WPF、MVVM、およびEntityFrameworkを使用しています。
簡単にするために、材料のリスト(無垢材)に対するCRUD操作のビューモデルがあるとします。
私のViewModelのEFコンテキスト(WTContext)は、プロパティインジェクションによって初期化されます。次に例を示します。
SolidWoods_VM newView = new SolidWoods_VM();
newView.Context = new WTContext(SettingsManager.Instance.GetConnectionString());
このようにして、このViewModelをテストできます。
SolidWoods_VM swVM = new SolidWoods_VM();
swVM.Context = new FakeWTContext();
挿入操作中に問題が発生し、WTContext.SaveChanges()が失敗したとします。ViewModelsコンテキストを更新するための最良の方法は何ですか?
ForTestingPurposesという名前のビューモデルに新しいboolプロパティを作成し、SaveChangesメソッドが失敗した場合:
try { Context.SaveChanges(); } catch { if (!ForTestingPurposes) { Context = new WTContext(SettingsManager.Instance.GetConnectionString()); } }
コンテキストの再読み込みのためにmainviewmodelにメッセージを送信します(メディエーターパターンを介して):
Mediator.Instance.NotifyColleagues<SolidWoods_VM>(MediatorMessages.NeedToUpdateMyContext, this);
(ただし、この方法では、boolプロパティが必要です)
3.追加のプロパティを使用せずに、よりエレガントなソリューションを提供します:)