私は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を呼び出すための私の方法は、次のようになります進行中ですので、私は本当に問題として困っています。誰にもアイデアはありますか?
ありがとうございました