2014-02-27 34 views
1

請在EF4中找到以下代碼。EF 6 - AsNoTracking()拋出錯誤 - 一個實體對象不能被IEntityChangeTracker的多個實例引用

public IObjectSet<PositionVoyage> PositionVoyages 
    { 
     get 
     {   
      if (_positionVoyages == null) 
      { 
       var data = CreateObjectSet<PositionVoyage>("PositionVoyages"); 
       if (NoTracking) 
        data.MergeOption = MergeOption.NoTracking; 
       else 
        data.MergeOption = MergeOption.OverwriteChanges; 

       _positionVoyages = data; 
      } 
      return _positionVoyages; 
     }  
    } 

但是當我升級到EF6我下面的下面的代碼:

public IDbSet<PositionVoyage> PositionVoyages 
    { 
     get 
     { 

      if (_positionVoyages == null) 
      { 
       var data = Set<PositionVoyage>(); 
       var query = data.AsNoTracking(); 
       _positionVoyages = data; 
      } 

      return _positionVoyages; 
     } 

    } 

在這裏,我結束了一個錯誤:

"An entity object cannot be referenced by multiple instances of IEntityChangeTracker." when it reaches below line.

Context.AttachTo(entitySetName, entity);

請幫我在這問候。

謝謝, 達摩

+0

此異常總是意味着一個對象同時連接到多個上下文實例(如果實體是用於延遲加載或更改跟蹤的動態代理,則會引發此錯誤)。它可能意味着您從不同的上下文加載對象(或手動將它附加到不同的上下文)並將它們以某種方式關聯到單個對象圖中,或者它可能是上下文生存期管理的問題(例如,上下文未正確處理) 。但是如果沒有更多的代碼細節,就不可能完全回答。 – Slauma

回答

0

EF6例如:

_positionVoyages = 查詢;

相關問題