2013-02-22 52 views
1

考慮下面的代碼駐留在一個服務(WCF)後:(?或有)失落包括實體拆卸的ObjectContext

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

我想訪問LinkedTable屬性在WPF環境,並希望分離上下文。 在分離上下文(result.foreach ....)之前,我可以將LinkedTable看作Table的一個屬性。 分離上下文後,表的LinkedTable屬性爲null。

我該如何防止這種行爲?

保羅

回答

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; 
} 
+0

感謝@Gert, 我實現了在serviceClient.Completed事件NoTracking選結果(使用獲取數據的異步WCF方法IM) 這一點。 sc.Completed + =(s,e)0> {this.rep = e.Result}; 連接已關閉的錯誤... – 2013-02-22 11:43:15

+0

我不明白設置「NoTracking」可能導致這種情況。在設置和執行查詢之間沒有異步發生。 – 2013-02-24 14:47:01

0

這是否幫助

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

這是關於'ObjectContext',而不是'DbContext'Ο – 2013-02-22 10:27:01

+0

Ooops - 我的錯! – 2013-02-22 10:59:01