实体框架:分离但保留对象图

时间:2010-10-20 19:11:31

标签: entity-framework dispose detach

我正处于断开连接的场景中,但我注意到处置对象上下文不会释放附加的实体。因此,后续操作通常会因此而失败。

所以要解决这个问题,我会在处理对象上下文时自行分离所有内容:

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 个答案:

答案 0 :(得分:1)

我们也有这个问题;您不能将图形的一部分附加到EF上下文。您是否考虑过最初在分离状态下加载数据?然后将上下文用作无状态数据存储库,而不是其他任何内容。

您最初可以按照以下方式加载数据:

myDataContext.MyEntitySet.MergeOption = MergeOption.NoTracking;