LINQ to SQL ForeignKeyReferenceAlreadyHasValueException错误

我尝试更改外键时生成此错误。 我知道这是一个非常常见的错误,我发现了很多关于它的信息,并试图实现我发现的修复程序,但在尝试更新密钥时仍然会出现此错误。 参考线程

最初我只是直接分配值而不是尝试映射实体。

ticket.assigned_to_group = assigned_to 

我已经改变了尝试映射我相信正确答案的实体; 但是我仍然得到错误。

 ticket.assigned_to_group = db.sub_units.Single(f => f.id == assigned_to).id; 

知道为什么这不起作用。 此外,如果我有一个包含多个外键的表,我是否真的需要为每个键执行一个新查询,还是有更好的方法?

我认为您在分配实体时尝试分配ID。 (我不是100%确定这是你在做什么)

 // Don't assign just the id Person.ParentId = parentId; // Assign the entity Person.Parent = db.Parents.Single(x.Id == parentId); 

对于第二个问题,您可以加载所有sub_units

var groups = db.sub_units.ToArray()和一次在内存中执行以下操作:

 foreach(var ticket in tickets) { ticket.assigned_to_group = groups.Single(f => f.id == assigned_to); }