私はEntityFrameworkを学び、各ViewModelがデータアクセス用のDbContextと連携するMVVMアプリで使用しています。免責事項:実際のアプリケーションでは、ViewModelがデータアクセス層と直接対話してはならないことを私は知っています。
各ViewModelは、モデル自体との関係を維持することによってビューの状態を監視および操作するために存在することを考えると、複数のDbContextオブジェクトをスピンアップすることの意味について疑問に思い始めました。また、DBContextのようなものをシングルトンとして残すのが最適かどうかを考え始めました。すぐに答えは「いいえ」でした。したがって、(複数のViewModelの場合のように)使用ごとにインスタンスを作成することがコンセンサスである場合、これを使用することで発生する可能性のある問題について誰もが言及している場所はまだわかりません。
詳細に説明すると、2つのViewModelがあり、それぞれにContext(TestContext
から継承DbContext
)を作成して、各ViewModelの存続期間中にデータアクセスアクティビティを維持するとします。
public class MainWindowViewModel : ViewModelBase
{
private TestContext db = new TestContext();
... other code follows (properties methods etc...)...
}
public class TestViewModel: ViewModelBase
{
private TestContext db = new TestContext();
... other code follows (properties methods etc...)...
}
各クラスにコンテキストを使用してそれを消費できるという落とし穴はありますか?
私を悩ませているそのような考えの1つは、一方のViewModelが他方よりも最新のデータを持ち、そのコンテキストがより「最新」であるように、どちらかのコンテキストを他方と同期させないことが可能かどうかです。このようなことを知りたいです。
ありがとう。
編集
コーディングしている状況に固有のものであるため、すべての状況を発見/カバーすることは望んでいません。私は、この主題に慣れていないことに気付いていない「事前の」または明らかな危険があるかどうかを知りたいだけです。