C# 实体框架InvalidOperationException:已在此EntityReference上设置Value属性。

C# 实体框架InvalidOperationException:已在此EntityReference上设置Value属性。,c#,entity-framework,C#,Entity Framework,我们现在的处境让我们很为难。 我们已经在生产环境中使用相同的代码运行了几个月,一切都很顺利。 我们的体系结构要求多台机器在同一个数据库上运行。 我们在.NET3.5中使用实体框架 突然之间,我们的所有机器(几乎)同时出现了一个异常。 重新启动应用程序后,不会再发生这种情况。 例外情况如下: 异常:已在此EntityReference上设置Value属性。不能将多个相关对象添加到EntityReference。(b)系统。 无效操作(例外) 来源:System.Data.Entity 目标站点:V

我们现在的处境让我们很为难。 我们已经在生产环境中使用相同的代码运行了几个月,一切都很顺利。 我们的体系结构要求多台机器在同一个数据库上运行。 我们在.NET3.5中使用实体框架

突然之间,我们的所有机器(几乎)同时出现了一个异常。 重新启动应用程序后,不会再发生这种情况。 例外情况如下:

异常:已在此EntityReference上设置Value属性。不能将多个相关对象添加到EntityReference。(b)系统。 无效操作(例外) 来源:System.Data.Entity 目标站点:Void AddEntityToLocallyCachedCollection(System.Data.Objects.DataClasses.EntityWithRelationships,布尔型) 堆栈跟踪:在System.Data.Objects.DataClasses.EntityReference
1.AddEntityToLocallyCachedCollection(EntityWithRelationships实体,布尔applyConstraints)
位于System.Data.Objects.DataClasses.RelatedEnd.Add(IEntityWithRelationshipTargetEntity,Boolean applyConstraints,Boolean AddRelationshipAsunched,Boolean relationshipAlreadyExists)
在System.Data.Objects.ObjectStateManager.AddEntityToCollectionOrReference(合并选项MergeOption、带关系的IEntitySourceEntity、AssociationEndMember sourceMember、带关系的IEntityTargetEntity、AssociationEndMember targetMember、Boolean setIsLoaded、Boolean relationshipAlreadyExists、Boolean inKeyEntryPromotion)
在System.Data.Common.Internal.Materialization.Shaper.HandlerRelationshipSpan[T_SourceEntity](T_SourceEntity实体、EntityKey targetKey、AssociationEndMember targetMember)
在lambda_方法(ExecutionScope,Shaper)
在System.Data.Common.Internal.Materialization.Coordinator中
1.ReadNextElement(整形器整形器) 在System.Data.Common.Internal.Materialization.Shaper
1.RowNestedResultEnumerator.MoveNext()中
在System.Data.Common.Internal.Materialization.Shaper中
在System.Data.Common.Internal.Materialization.Shaper
1.ObjectQueryNeedEnumerator.ReadElement()中
在System.Data.Common.Internal.Materialization.Shaper中
在MyApplication.GetUsers()上

它发生在我们查询用户时(我们每隔几分钟刷新一次内部缓存)。 这是我们用来查询用户的代码:

    foreach (var user in context.User.Include("Table1").Include("Table2").Include("Table3").Include("Table4").Include("Table5")) 
        {
            users.Add(getUser(user ));
        }
由于这段代码非常古老,而且所有计算机上都同时发生了这一切,我们假设这与数据库有关(它们都在同一个数据库上运行)。 但是,我们在数据库跟踪中没有发现任何可疑的东西。 我们在谷歌上搜索了这个错误,除了这个链接没有找到任何东西 这并没有给我们更多的信息。模型不太可能有问题,对吧?它已经运行了很长时间 没有问题。。。 我们还试图查看Reflector以了解实体框架的代码。看起来它正在尝试设置一个已经设置的内部缓存,因此它正在抛出异常。 我们不太明白这个缓存的目的是什么。它是用来存储主键的吗?如果是这样,它是否找到了重复的主键?那没有多大意义。 任何帮助都将不胜感激。
谢谢。

您的数据库发生了一些变化。它看起来像是基于错误的架构更改,但可能与数据相关。对照
用户
对象检查模式和数据。另外,用几个用户创建一个较小的数据库,看看它是否仍然存在。您的
上下文的生命周期是多少?它应该很短。