我在创建新记录时有这种情况,它还会重新创建它的关联。
User newUser = new User();
newUser.UserGroupID = 1;
newUser.UserGroup = UserGroup.Find(1);
using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
context.Users.Add(newUser);
context.SaveChanges();
}
当我保存它时,它会创建一个新的用户记录,因此是一个新的UserGroup记录。
答案 0 :(得分:1)
您正在为UserGroup.Find()和Users.Add()使用不同的上下文,这是不行的 - 对两者使用相同的上下文,它将正常工作。
using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
var newUser = new context.Users.CreateNew();
newUser.UserGroup = context.UserGroup.Find(1);
context.Users.Add(newUser);
context.SaveChanges();
}
答案 1 :(得分:0)
您需要告诉您的实体是现有实体的上下文:
User newUser = new User();
newUser.UserGroupID = 1;
newUser.UserGroup = UserGroup.Find(1);
using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
context.UserGroups.Attach(newUser.UserGroup);
context.Users.Add(newUser);
context.SaveChanges();
}
答案 2 :(得分:0)
这与this question中的问题相同。对Find和SaveChanges使用相同的上下文,或者,如果由于某种原因无法完成,请使用Attach()将找到的UserGroup附加到新上下文。