Вот сценарий, у меня есть веб-сайт, который в одном HTTP-запросе (HTTP POST), мне нужно сделать следующее:
- Возьмите объект (скажем, "Tag")
- Сохранить какой-нибудь другой объект (скажем, «Вопрос»)
- Получите свежую копию "Tag".
- Переадресация на другую страницу, для которой требуется свежая копия «Tag».
За кулисами 2) используются триггеры на стороне базы данных, которые влияют на данные в «теге».
Поэтому, когда я делаю 3), EF извлекает ту же копию объекта из шага 1), поскольку она находится в графе / внутренней памяти (например, в том же соединении / контексте)
Мне нужна «свежая» копия объекта.
В прошлом я использовал Detach
, затем я выполняю запрос EF, и последний объект извлекается из БД.
Но у меня здесь нет доступа к объекту per se (у меня есть DTO, который возвращается из моего хранилища), поэтому мне нечего передавать методу Detach
.
Есть ли способ сказать:
var fresh = db.Tags.Find(1, ignoreGraph: true)
Или есть другая альтернатива?
Как уже упоминалось, я нахожусь на Entity Framework 4.1, C # 4 (и ASP.NET MVC 3)
Единственное решение, которое я вижу сейчас, - это передать параметр строки запроса на следующую страницу, которая затем получает свежую копию (поскольку это новый контекст, новый граф и т. Д.).