相关疑难解决方法(0)

实体框架多对象上下文

这个问题已经以50种不同的方式被问到了500个不同的时间......但是这里又一次,因为我似乎无法找到我正在寻找的答案:

我正在使用EF4和POCO代理.

答:我有一个从ObjectContext的一个实例中获取的对象图.该ObjectContext被释放.

B.我有一个从ObjectContext的另一个实例获取的对象.ObjectContext也被处理掉了.

我想在A中使用B中的实体设置一堆相关的属性....类似于

foreach(var itemFromA in collectionFromA)
{
   itemFromA.RelatedProperty = itemFromB;
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了例外:

System.InvalidOperationException occurred
  Message=The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.
  Source=System.Data.Entity
  StackTrace:
       at System.Data.Objects.DataClasses.RelatedEnd.Add(IEntityWrapper wrappedTarget, Boolean applyConstraints, Boolean addRelationshipAsUnchanged, Boolean relationshipAlreadyExists, Boolean allowModifyingOtherEndOfRelationship, Boolean forceForeignKeyChanges)
       at System.Data.Objects.DataClasses.RelatedEnd.Add(IEntityWrapper wrappedEntity, Boolean applyConstraints)
       at System.Data.Objects.DataClasses.EntityReference`1.set_ReferenceValue(IEntityWrapper value)
       at System.Data.Objects.DataClasses.EntityReference`1.set_Value(TEntity value)
       at 
Run Code Online (Sandbox Code Playgroud)

我想我需要将这些实体从ObjectContexts中分离出来,以便上面的代码可以工作......问题是,当它处理时从我的ObjectContext中分离所有实体似乎会破坏图形.如果我这样做:

objectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged)  
.Select(i => i.Entity).OfType<IEntityWithChangeTracker>().ToList()  
.ForEach(i => objectContext.Detach(i));
Run Code Online (Sandbox Code Playgroud)

图中的所有关系似乎都未被设置.

我怎样才能解决这个问题?

.net c# architecture entity-framework entity-framework-4

5
推荐指数
2
解决办法
2万
查看次数