我有两个表(用户,消息),它们之间存在多对多关系。 我想在消息表中添加新消息并为当前用户分配按摩。 我也插入如下数据:
Message newMessage = Message.CreateMessage("MessageText", "DateTime");
newMessage.Users.Add(new User{..... });
context.SaveChange();
此代码将执行一个查询,在users表中添加一个新用户,而users表有一些指定的用户,我不想添加新用户,但正如我所提到的,我想在消息表中添加新消息并分配对当前用户的按摩。
我应该怎么做?
答案 0 :(得分:0)
问题是您正在使用现有主键创建新的User
对象。当SaveChanges()
被调用时,EF会检测已经跟踪的实体的更改以及添加的新实体。由于EF未跟踪新的User
对象,因此会尝试插入它。
您需要明确告诉EF所创建的用户是现有用户。要做到这一点,你需要attach它。
Message newMessage = Message.CreateMessage("MessageText", "DateTime");
var user = new User{ Id = "foo" };
context.Users.Attach(user);
newMessage.Users.Add(user);
context.SaveChange();