ASP MVC 4 Глобальное DBContext кеширование сущностей

Вот что я пытаюсь сделать:

//Check if NewsItems exists in HttpRuntime.Cache
...

//If it does not, add the items to cahce
using (var Work = new UnitOfWork())
{
    var NewsItems=Work.Repository<NewsRepository>().GetTop10();
    //Store NewsItems in HttpRuntime.Cache
    ...
}

После этого я использую NewsItems от HttpRuntime.Cache, Моя проблема в том, что иногда NewsItems все еще привязаны к старому контексту, и я не уверен, как их правильно отсоединить.

Я пробовал что-то простое, как это:

foreach (var NewsItem in NewsItems) {
    Work.Context.Entry(NewsPost).State = System.Data.Entity.EntityState.Detached;    
}

Но он, кажется, не привязывается должным образом, и я получаю исключения из нескольких контекстов, используя одну и ту же сущность.

Должен ли я клонировать объект вместо этого? Или я должен де-присоединять свои сущности по-другому?

1 ответ

Решение

Вы пробовали это?

foreach (var NewsItem in NewsItems)
{
    ((IObjectContextAdapter) Work.Context).ObjectContext.Detach(NewsItem);
}
Другие вопросы по тегам