Проблемы Entity Framework: получение кэшированных значений вместо последних изменений - PullRequest
2 голосов
/ 18 октября 2011

У меня есть хранимая процедура, которая перебирает таблицу, и она может вставить некоторые записи в эту таблицу. Работает нормально. Я могу видеть изменения в БД, используя Management Studio.

Проблема в том, что после этого я буду вызывать другую хранимую процедуру, которая будет возвращать коллекцию. Но она всегда возвращает кэшированное значение или что-то в этом роде. Последние изменения в db не отражены в возвращенном списке. Есть идеи?

EDIT

Я импортирую хранимую процедуру для работы с использованием EF. Все операции, которые я сделал, осуществляются через EF. Чек следующий код

 TraktorumEntities db = new TraktorumEntities();
var test= db.GetAvailableAttributes(CategoryID).ToList(); // here i get cached values  .How can i force to fetch data from data base 

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Если вы запрашиваете тот же ключ, EF будет кэшировать ваши результаты.

Обратите внимание на раздел «MergeOption.OverwriteChanges» здесь

Пошаговое руководство. Отображение объекта в хранимые процедуры (инструменты модели данных объекта) Вы должны указать EF «получать новые данные и перезаписывать локально сохраненную версию» с помощью этой опции.

Также вы на самом деле не говорите нам точно, как вы запрашиваете эти данные. Это сопоставленная хранимая процедура (сопоставленная с операцией сущности) или вызывающая ее непосредственно в контексте, или ....?

EDIT Попробуйте что-нибудь в этом духе

var test= db.GetAvailableAttributes(CategoryID)
test.MergeOption = MergeOption.NoTracking;
var results = test.ToList()
0 голосов
/ 18 октября 2011

Вы оставили какой-то Database.SetInitializer в глобальном Application_Start?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...