2015-07-14 4 views
0

Моя проблема заключается в том, что когда я пишу основной запрос EF для получения данных из базы данных, он извлекает данные в порядке, но когда я меняю данные в базе данных SQL Server и перезагружаю запрос, Я получаю тот же набор данных, а не новые данные. И это требует времени, чтобы данные были измененной информацией.Entity Framework, похоже, кэширует данные

var mm = o.GetContent(page, title); 

выше запроса, например, вернет

mm.Body = "Test"; 

Тогда, если я изменю Body в базе данных SQL Server для Test1 и перезагрузите запрос, он не приносит обратно Test1.

public String GetContent(String page, String title) 
{ 
    var o = new DataContext(); 

    var mm = o.GetContent(page, title); 

    return HttpUtility.HtmlDecode(mm.Body); 
} 

public class DataContext 
{ 
    private static ApplicationDbContext Da = new ApplicationDbContext(); 

    public Content GetContent(String page, String title) 
    { 
     return Da.Content.SingleOrDefault(c => c.Page == page && c.Title == title); 
    } 
} 

Я посетил ряд С.О. сообщений:

Prevent Caching in ASP.NET MVC for specific actions using an attribute

ASP.NET MVC how to disable automatic caching option?

+0

Не могли бы вы показать, как вы строите запрос? Полная инструкция LINQ? – Kamo

+0

Привет, Камо, я отредактировал мой вопрос. –

+0

При повторном запросе вы создаете новый экземпляр вашего 'ef context', если вы не являетесь его ef, который запрашивает его кеш – 3dd

ответ

3

Ваш экземпляр DbContext является статическим:

private static ApplicationDbContext Da = new ApplicationDbContext(); 

Поэтому в AppDomain, так что это до тех пор, пока вы не переработаете приложение бассейн. В DbContext хранится кеш элементов, которые он видел раньше, до тех пор, пока вы не получите call the Refresh() method.

Но не делайте этого. Не делайте его статичным. Используйте Entity Framework в качестве единицы работы, насколько это возможно. Создайте один экземпляр для запроса.

+0

спасибо, решён. –

+0

Как и ясность вашего утверждения «Создайте один экземпляр для запроса». – Gareth

Смежные вопросы