2

我正在开发一个使用 EF5 作为 ORM 的应用程序。

在开始之前,我需要创建测试以确认 EF5 中的所有内容都正常工作。我测试的一件事是对 UnitOfWork 的支持。我通过创建多个 DbContext 实例来模拟多个工作单元(例如在 IOC 中将 DbContext 生命周期设置为 PerWebRequest 时的多个请求)。

我在那里遇到了一个惊喜,因为 EF5 似乎使用了SqlDependency之类的东西,因为我的情况如下:

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 项目页面和博客和谷歌都没有帮助我。这不是旧版 EF 的工作方式,没有开箱即用的功能来通知其他上下文(即参见这个问题)。如果这实现了很好,但我需要说明它的文档,因为我担心我不能依赖这个特性,而且我不能依赖知道如果其他工作单元完成,我的上下文中的数据不会改变,就像这里显然一样。

4

0 回答 0