Я работаю над приложением, которое будет использовать EF5 в качестве ORM.
Перед запуском мне нужно было создать тесты, чтобы убедиться, что в EF5 все работает как надо. Одной из вещей, которые я тестировал, была поддержка UnitOfWork. Я смоделировал несколько единиц работы, создав несколько экземпляров DbContext (например, несколько запросов, когда время жизни DbContext установлено на PerWebRequest в IOC).
Я столкнулся с сюрпризом, так как 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, ни блоги, ни Google мне не помогают. Это не то, как работала старая версия EF, где не было готовой функции для уведомления других контекстов (т.е. см. этот вопрос). Хорошо, если это реализовано, но мне нужен документ, в котором говорится, что это так, потому что я боюсь, что не могу полагаться на эту функцию, и я не могу полагаться на знание того, что данные в моем контексте не изменятся, если другая единица работы завершится. , как здесь очевидно.