Структура сущности: отсоединение, но сохранение графа объекта - PullRequest
4 голосов
/ 20 октября 2010

Я работаю в автономном сценарии, но заметил, что удаление контекста объекта не освобождает присоединенные объекты. В результате последующие операции часто не выполняются из-за этого.

Итак, чтобы решить эту проблему, я отключаю все сам, когда контекст объекта располагается:

public void Dispose()
{
   // detaching is not really needed, because we have short living object contexts
   var objectStateEntries = 
       _context.UnderlyingContext.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged);           
   objectStateEntries.ToList().ForEach(o => { if (o.Entity != null)
   {                
     _context.UnderlyingContext.Detach(o.Entity);               
   }});            

   _context.Dispose();
   _context = null;    
}

Тем не менее, побочным эффектом является то, что граф объектов полностью отключается, но я действительно хочу сохранить график!

Кажется, я не могу найти решение для этого, правда ли, что это не может быть сделано?

1 Ответ

1 голос
/ 16 июня 2011

У нас тоже была эта проблема;Вы не можете иметь часть графа, привязанную к контексту EF.Рассматривали ли вы загрузку данных изначально в отключенном состоянии?Затем контекст используется в качестве хранилища данных без сохранения состояния и ничего более.

Вы можете загрузить данные как отсоединенные изначально следующим образом:

myDataContext.MyEntitySet.MergeOption = MergeOption.NoTracking;
...