我不断收到以下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
的新实例,将HwItem
设置为之前存储在字典中的项目,然后使用LINQ to SQL命令设置ReqCode
,该命令在表中查找与我传入的req代码匹配的req代码。任何帮助将不胜感激。您需要的任何信息,我很乐意提供。
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启动,我仍然得到该错误。但我确实注意到,如果我等待一段时间,再试一次,它有效....有时候。
答案 0 :(得分:1)
您是否检索同一线程/上下文中的所有项目?尝试在同一个帖子上检索项目。
答案 1 :(得分:-1)
newCorr.ReqCode = (from req in context.ReqCodeSet
where req.Code equals requirement.Code
select req).FirstOrDefault();
OR
newCorr.ReqCode = context.ReqCodeSet
Where( r => r.Code == requirement.Code)
.FirstOrDefault();