为什么LINQ to SQL实体关联在插入新记录时会创建一个新的(重复)行?

时间:2009-04-24 10:18:29

标签: c# .net asp.net linq linq-to-sql

我正在尝试使用LINQ-to-SQL插入新实体,并且实体与User实体相关联。新实体的插入成功,但我现有的用户实体被插入,就好像它是一个新用户一样。代码如下所示:

var someEntity = new Entity();
someEntity.User = this.User;
dataContextInstance.SomeEntities.InsertOnSubmit(someEntity);
dataContextInstance.SubmitChanges();

有谁知道为什么将用户作为全新实体插入到Users表中?似乎User.UserId将成为映射到正在插入的someEntity的行的UserId列中的外键值。

感谢您提供任何帮助/建议/意见

3 个答案:

答案 0 :(得分:10)

由于User实体之前已被另一个DataContext加载(希望现在可以将其处理!),您必须将它附加到新的(当前)DataContext,否则DataContext将其视为新的实体而不是现有的(已存在于数据库中)。

答案 1 :(得分:0)

确保您对两个表使用相同的实例 DataContext。请参阅我的问题here(我认为)更清楚地解释问题。

答案 2 :(得分:-1)

对不起,我收不到了吗?您想要更新现有用户吗?什么是一些实力?

有意义的是,LINQ尝试插入一个新用户,因为你告诉它这样做。如果您只想更改一个用户,则需要从SomeEntities中选择他,执行更新,然后调用SubmitChanges(LINQ将识别,原始实体已被修改) - 没有.InsertOnSubmit。