我正在开发一个将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的旧版本的工作方式,其中没有开箱即用的功能来通知其他上下文(即参见this question)。如果实现这一点很好,但是我需要文档说它是,因为我担心我不能依赖这个功能,而且我不能依赖于知道如果其他工作单元完成,我的上下文中的数据不会改变,就像这里显然那样。