我在和一个实体框架问题做斗争,完全超出了我的深度。
简而言之,在试图持久化对象的过程中,我碰到了一个无效的操作异常。我追溯到两个实体以及它们之间的关系。我的实际上下文太技术性了,没有任何意义,所以在一个简单的领域中,这是一个等价的例子:
人物
组织
因此,组织和人之间有两种多到零或一种关系。
当我尝试ObjectSet.Attach()时,我遇到了一个例外,该组织的首席执行官和首席财务官都是同一个人。似乎EF试图(但失败)连接第二个人。
System.InvalidOperationException: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.
at System.Data.Objects.ObjectContext.AttachSingleObject(IEntityWrapper wrappedEntity, EntitySet entitySet, String argumentName)
at System.Data.Objects.DataClasses.RelatedEnd.AddEntityToObjectStateManager(IEntityWrapper wrappedEntity, 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.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.AttachTo(String entitySetName, Object entity)
at System.Data.Objects.ObjectSet`1.Attach(TEntity entity)如果首席执行官和首席财务官是不同的人,或者我删除了组织和个人之间的联系,问题就不会发生。
EF是否能够处理这种模式/关系?如果是,我如何解决异常?
发布于 2015-08-20 22:00:36
向实体框架说明哪些是对外关系
Organisation
//CEO
public int IdCeo { get; set; }
[ForeignKey("IdCeo")]
public virtual Person CEO { get; set; }
//CFO
public int IdCfo { get; set; }
[ForeignKey("IdCfo")]
public virtual Person CFO { get; set; }https://stackoverflow.com/questions/32128953
复制相似问题