[英]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.