我正在尝试使用LINQ-to-SQL插入新实体,并且实体与User实体相关联。新实体的插入成功,但我现有的用户实体被插入,就好像它是一个新用户一样。代码如下所示:
var someEntity = new Entity();
someEntity.User = this.User;
dataContextInstance.SomeEntities.InsertOnSubmit(someEntity);
dataContextInstance.SubmitChanges();
有谁知道为什么将用户作为全新实体插入到Users表中?似乎User.UserId将成为映射到正在插入的someEntity的行的UserId列中的外键值。
感谢您提供任何帮助/建议/意见
答案 0 :(得分:10)
由于User实体之前已被另一个DataContext加载(希望现在可以将其处理!),您必须将它附加到新的(当前)DataContext,否则DataContext将其视为新的实体而不是现有的(已存在于数据库中)。
答案 1 :(得分:0)
确保您对两个表使用相同的实例 DataContext。请参阅我的问题here(我认为)更清楚地解释问题。
答案 2 :(得分:-1)
对不起,我收不到了吗?您想要更新现有用户吗?什么是一些实力?
有意义的是,LINQ尝试插入一个新用户,因为你告诉它这样做。如果您只想更改一个用户,则需要从SomeEntities中选择他,执行更新,然后调用SubmitChanges(LINQ将识别,原始实体已被修改) - 没有.InsertOnSubmit。