在分离objectcontext后丢失包含的实体

时间:2013-02-22 07:48:56

标签: c# wpf wcf entity-framework-4

考虑以下代码驻留在服务(WCF)中:

 using (var context = new ctxEntities())
            {
                var result = context.MyTable.Include("LinkedTable")
                                   .Where(c => c.RepairID == repairID).ToList();
                result.ForEach(e => context.Detach(e));
                return result;
            }

我想访问WPF环境中的LinkedTable属性,并希望(或有?)分离上下文。 在分离上下文(result.foreach ....)之前,我可以“看到”LinkedTable作为Table的属性。 在分离上下文后,Table的LinkedTable属性为null。

如何防止此行为?

2 个答案:

答案 0 :(得分:0)

Detach也会卸载关系管理器中条目的相关末尾。

如果您通过预先关闭跟踪来消除分离的需要,这会有所帮助。无论如何,这是一种改进,因为它消除了附加/分离的开销。

using (var context = new ctxEntities())
{
    context.MyTable.MergeOption = MergeOption.NoTracking;
    var result = context.MyTable.Include("LinkedTable")
                       .Where(c => c.RepairID == repairID).ToList();
    return result;
}

答案 1 :(得分:0)

这有用吗

using(var context = new ctxEntities()){
    context.Configuration.ProxyCreationEnabled = false;
    context.Configuration.LazyLoadingEnabled = false;
    //....