2012-01-26 9 views
2

私はSTEの(EF4.1)を使用しているプロジェクトがあり、私は自動生成されたApplyChanges()メソッドを呼び出したときに再現可能な問題にぶつかっています私のオブジェクトセット、私はメモリに保持しているオブジェクトグラフを渡し、私は次のエラーを取得しています:T4で生成されたヘルパーメソッドSelfTrackingModel.Context.Extensions InvalidOperation

InvalidOperationException: 
    Collection was modified; enumeration operation may not execute. 

これが呼び出されているObjectContext.AddObject()メソッドへのコール内から発信されますT4 autoによって生成されたApplyChanges()メソッド。

// Extension to auto generated Session : IObjectWithChangeTracker 
public partial class Session 
{ 
    public void SaveToDatabase(String myConnectionString) 
    { 
     using (MyContext DbContext = new MyContext(myConnectionString)) 
     { 
      DbContext.Sessions.ApplyChanges(this); 
      DbContext.SaveChanges(); 
     } 
    } 
} 

私はエラーをヒットコールスタックは、次のようになります:

at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 
at System.Collections.Generic.List`1.Enumerator.MoveNextRare() 
at System.Collections.Generic.List`1.Enumerator.MoveNext() 
at System.Data.Objects.DataClasses.RelatedEnd.WalkObjectGraphToIncludeAllRelatedEntities(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.AddGraphToObjectStateManager(IEntityWrapper wrappedEntity, Boolean relationshipAlreadyExists, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.IncludeEntity(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.EntityReference`1.Include(Boolean addRelationshipAsUnchanged, Boolean doAttach) 
... // The below 4 lines are pretty much repeated as it iterates through the object graph 
at System.Data.Objects.DataClasses.RelatedEnd.WalkObjectGraphToIncludeAllRelatedEntities(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.AddGraphToObjectStateManager(IEntityWrapper wrappedEntity, Boolean relationshipAlreadyExists, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.IncludeEntity(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.EntityCollection`1.Include(Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.WalkObjectGraphToIncludeAllRelatedEntities(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.AddGraphToObjectStateManager(IEntityWrapper wrappedEntity, Boolean relationshipAlreadyExists, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelatedEnd.IncludeEntity(IEntityWrapper wrappedEntity, Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.EntityReference`1.Include(Boolean addRelationshipAsUnchanged, Boolean doAttach) 
at System.Data.Objects.DataClasses.RelationshipManager.AddRelatedEntitiesToObjectStateManager(Boolean doAttach) 
at System.Data.Objects.ObjectContext.AddObject(String entitySetName, Object entity) 
at MyNamespace.SelfTrackingEntitiesContextExtensions.AddHelper.AddAllEntities(ObjectContext context, String entitySetName, IObjectWithChangeTracker entity) 
at MyNamespace.SelfTrackingEntitiesContextExtensions.ApplyChanges[TEntity](ObjectContext context, String entitySetName, TEntity entity) 
at MyNamespace.SelfTrackingEntitiesContextExtensions.ApplyChanges[TEntity](ObjectSet`1 objectSet, TEntity entity) 
at MyNamespace.Transaction.SaveToDatabase(String transactionDbConnectionString) 

私は運転しながら、すべてのオブジェクトグラフを変更しないよApplyChangesを呼び出すための私の方法は、次のようになります進行中ですので、私は本当に問題として困っています。誰にもアイデアはありますか?

ありがとうございました

答えて

0

同じ問題がありました。 ナビゲーションプロパティを削除してサークルでは実行できない問題を解決できました。 AがBをナビゲーションプロパティとして持つ場合、BはAをナビゲーションプロパティとして持つべきではありません。 すべての状況下では可能ではありませんが、私たちの場合は問題を解決しました。

0

同じ問題がありました。 .net 4.5で修正されたバグのように見えます。

関連する問題