更新myItem1
时,相关实体Entity2
不会更新,但EF
会尝试添加新的Entity2
。它会抛出主键约束错误。 MyItem
与many-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();
}
答案 0 :(得分:0)
看起来这一行会将Entity2
附加到Added
状态的上下文中。将状态myItem
设置为Modified
并不会影响其子实体...
myItem1.Entity2 = myitem.Entity2;
如果您确定这是数据库中已存在的有效实体,请将其状态更改为Modified
...
db.ObjectStateManager.ChangeObjectState(myItem1.Entity2, EntityState.Modified);
此外,不应该将myItem1
标记为Modified
,因为在设置Modified
属性时它应该已经处于Name
状态。