Отключить кеширование объектов в Entity Framework CTP5 - PullRequest
10 голосов
/ 06 февраля 2011

У меня возникли проблемы с определением чего-либо с помощью Entity Framework Code First в CTP 5. Он выполняет кэширование объектов, а я этого не хочу. Например, я загружаю страницу (работающую с сайтом ASP.NET MVC), которая загружает объект. Затем я иду изменить базу данных. Я перезагружаю страницу и изменения не отражаются. Если я убью сайт и перезапущу его, то он, очевидно, снова загрузится. Как мне, как правило, для типа, или даже для конкретного запроса, сказать ему всегда идти, чтобы получить новую копию. Я думаю, что это может иметь какое-то отношение к MergeOption, но у меня возникают проблемы с поиском примеров, которые работают с CTP 5. Спасибо.

1 Ответ

15 голосов
/ 06 февраля 2011

Ладно, разобрался. Из кэша EF иногда извлекается следующее:

return (from m in _dataContext.Monkeys
        where m.MonkeyId == monkeyId
        select m).FirstOrDefault();

Вы можете использовать AsNoTracking () для обхода отслеживания изменений / кэширования:

return (from m in _dataContext.Monkeys.AsNoTracking()
        where m.MonkeyId == monkeyId
        select m).FirstOrDefault();
...