繁体   English   中英

实体框架:LINQ to Entities分配产生不同的ObjectContext对象错误

[英]Entity Framework: Different ObjectContext object error with LINQ to Entities assignment

我不断收到以下InvalidOperationException

无法定义两个对象之间的关系,因为它们已附加到不同的ObjectContext对象。

尝试执行以下代码时:

newCorr.ReqCode = (from req in context.ReqCodeSet
                   where req.Code.Equals(requirement.Code)
                   select req).FirstOrDefault();

在此行之前,我正在执行以下操作:

 foreach (Requirement requirement in myInformation.Reqs)
 {
     MyHwReqCorr newCorr = new MyHwReqCorr();

     newCorr.HwItem = Dictionaries.Instance.HwIdHwRecordDictionary[requirement.Id];

因此,我正在做的是解析我的Information.Reqs列表,创建MyHwReqCorr的新实例,将MyHwReqCorr设置为HwItem存储在字典中的项目,然后使用LINQ to SQL命令设置ReqCode可以在表格中查找与我要传递的代码相匹配的请求代码。我们将不胜感激。 您需要的任何信息,我都会很乐意提供。

编辑:就在我调用此foreach之前,我可以调用此(作为测试以验证我可以访问db):

List<ReqCode> reqCodeList = (from req in context.ReqCodeSet select req).ToList();

而且我从来没有遇到任何错误。 但是当我尝试在该列表中设置一个项目时(使用where扩展方法,例如:

newCorr.ReqCode = reqCodeList.Where(t=>t.Code == requirement.Code).FirstOrDefault();

或使用类似于newCorr.HwItem的字典,出现了主要错误。

EDIT2:我还注意到发生了一些奇怪的事情:当我最初运行任何设置(我的原始方法或变量方法或Rony发布的方法)时,它都可以工作。 但是任何后续运行(即如果我停止调试并再次开始调试),都会失败并显示该错误。 仅当我杀死所有excel实例(该实例在后台运行并生成日志供以后查看)并等待大约2-3分钟时,它才能再次起作用,然后遵循与之前相同的情况...通过第一次,随后的立即失败。

EDIT3:绝对与Excel不相关,因为我阻止了Excel的启动,但仍然出现该错误。 但是我确实注意到,如果我稍等片刻,然后再试一次,它就可以工作了……有时。

您是否正在同一线程/上下文中检索所有项目? 尝试检索同一线程上的项目。

newCorr.ReqCode = (from req in context.ReqCodeSet
                   where req.Code equals requirement.Code
                   select req).FirstOrDefault();

要么

newCorr.ReqCode = context.ReqCodeSet
                        Where( r => r.Code == requirement.Code)
                        .FirstOrDefault();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM