2017-02-15 14 views
1

У меня есть веб-API на основе Entity Framework, который считывает и записывает данные в базу данных Mssql. Контекст замечательный, если вы не хотите получать доступ к базе данных каждый раз, когда хотите получить доступ к любым данным, потому что они кэшируют данные, которые вы использовали ранее.Entity Framework - предотвращение кэша в контексте

Но моя проблема связана с этим;

У меня есть сканер, который работает автономно и меняет базу данных. Таким образом, мой контекст веб-приложения не знает, что изменилось искателем. Потому что, когда я пытаюсь получить доступ к данным, он показывает мне данные в контексте.

Итак, как я могу предотвратить кеширование в контексте, как я могу сказать, что для чтения данных из mssql для каждого запроса?

ответ

0

Если вы знаете, что объект был изменен из текущего контекста, чем вы можете загрузить его с помощью Reload метода:

Generic версия может быть выглядит следующим образом:

public T Reload<T>(T entity) where T : class 
{ 
    Context.Entry(entity).Reload(); 
    return entity; 
} 

КСТАТИ вам может избежать таких проблем в большинстве случаев и особенно в случае Web API/MVC из-за правильного управления жизненным циклом контекста EF (вам нужно создать новый экземпляр контекста для каждого запроса)