更新相关实体会尝试添加新的相关实体

时间:2014-04-14 02:56:27

标签: entity-framework

更新myItem1时,相关实体Entity2不会更新,但EF会尝试添加新的Entity2。它会抛出主键约束错误。 MyItemmany-to-one

的关系Entity2
public HttpResponseMessage PutMyItem(MyItem myitem)
    {
        if (ModelState.IsValid)
        {
            MyItem myItem1 = db.MyItems.First(m => m.MyItemId == myitem.MyItemId);
            myItem1.Name = myitem.Name;
            myItem1.Entity2 = myitem.Entity2;

            db.ObjectStateManager.ChangeObjectState(myItem1, EntityState.Modified);

            try
            {                    
                db.SaveChanges();
            }

1 个答案:

答案 0 :(得分:0)

看起来这一行会将Entity2附加到Added状态的上下文中。将状态myItem设置为Modified并不会影响其子实体...

myItem1.Entity2 = myitem.Entity2;

如果您确定这是数据库中已存在的有效实体,请将其状态更改为Modified ...

db.ObjectStateManager.ChangeObjectState(myItem1.Entity2, EntityState.Modified);

此外,不应该将myItem1标记为Modified,因为在设置Modified属性时它应该已经处于Name状态。

相关问题