Кэширование Entity Framework в Azure - PullRequest
0 голосов
/ 09 января 2020

У меня есть приложение MVC. NET (. NET Framework 4.7.2), которое использует MySQL .Data 6.10.7, Entity Framework 6.4.0 и MySQL .Data.Entity 6.10. .7.

У меня также есть база данных MySQL 5.6, в которую устройства IoT отправляют данные.

Приложение работает без сбоев на IIS Express во время отладки из Visual Studio 2019. Это также работает нормально, когда я публикую sh на локальном сервере IIS 10 моего Windows 10. Проблемы начинаются, когда я публикую sh приложение на Azure.

Некоторые запросы извлекают кэшированные данные , Новые записи в базе данных не выбираются. Через некоторое время (~ 2 часа) эти данные также извлекаются. Я пробовал разные вещи, найденные на форумах, чтобы отключить кэширование Entity Framework, но ничего не помогло. Я почти уверен, что это проблема с кэшированием, поскольку одни и те же запросы Entity (зарегистрированные) с разных серверов (локальный, Azure) извлекают разные данные. Один и тот же запрос со всех серверов (локальный, Azure) через некоторое время извлекает правильные данные.

Имеет ли Azure заданный параметр c для кэширования среды Entity (или кэширования в целом), который Я могу отключить?

Есть еще идеи?

1 Ответ

0 голосов
/ 10 января 2020

Если вы хотите полностью игнорировать кэш EF6 для извлечения данных, добавьте AsNoTracking () в конец вашего запроса, который предшествует вызову ToList () или выполнению чего-либо еще, что могло бы выполнить запрос.

Пространство имен «System.Data.Entity» содержит это расширение, и его очень легко использовать в наших приложениях. Ниже приведен пример того, как использовать метод AsNoTracking.

using(Entities context = new Entities())  
{  
    var employee = context.Employees.AsNoTracking().ToList();  
    var employee2 = context.Employees  
                    .Where(p => p.EmployeeId >= 3)  
                    .AsNoTracking().ToList();  
} 

Для подробного объяснения вы можете прочитать ниже do c:

https://www.c-sharpcorner.com/UploadFile/ff2f08/entity-framework-and-asnotracking/

Кроме того, вы можете попытаться обновить sh контекст вашей БД, если вам нужны данные fre sh.

Надеюсь, это поможет.

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