私は、EF5 を ORM として使用するアプリケーションに取り組んでいます。
開始する前に、EF5 のすべてが正常に機能していることを確認するためのテストを作成する必要がありました。私がテストしたことの 1 つは、UnitOfWork のサポートでした。DbContext の複数のインスタンスを作成することで、複数の作業単位をシミュレートしました (IOC で DbContext の有効期間が PerWebRequest に設定されている場合の複数の要求など)。
SqlDependencyのようなものを使用しているように見えるため、EF5 として驚きに遭遇しました。
DbContext unit1 = new DbContext(), unit2 = new DbContext();
unit1.Items.Add(new Item() { Name = "Item1" });
Assert.AreEqual(0, unit1.Items.ToList().Count); // true as item is in unit1.Items.Local collection
Assert.AreEqual(0, unit2.Items.ToList().Count);
unit1.SaveChanges();
Assert.AreEqual(1, unit1.Items.ToList().Count); // true as unit1 is saved
Assert.AreEqual(1, unit2.Items.ToList().Count); // true as unit2 is somehow notified of changes
ドキュメントを見つけようとしていますが、EF プロジェクトのページやブログも Google も役に立ちません。これは、他のコンテキストに通知するためのすぐに使用できる機能がなかった古いバージョンの EF の動作方法ではありません (つまり、この質問を参照してください)。これが実装されていればいいのですが、実装されていることを示すドキュメントが必要です。この機能に頼ることができないのではないかと心配しており、他の作業単位が完了した場合にコンテキスト内のデータが変更されないことを知っていることに頼ることができないからです。 、ここで明らかにそうです。