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);
}