运行下面的代码后,item.Name仍然显示“New Item”。
这里有什么问题?
item.Name = "Updated Item";
items.Update(item);
public void Update(Item item)
{
using (var context = new wirvar_masterEntities())
{
var key = new EntityKey("wirvar_masterEntities.Items", "ID", item.ID);
var itemToUpdate = (Item)context.GetObjectByKey(key);
if (itemToUpdate == null) return;
itemToUpdate = item;
context.SaveChanges();
}
}
答案 0 :(得分:3)
错误的是保存没有变化。您收到了来自数据库的itemToUpdate
,并且在您使用参考项目替换数据之后 - EF从未知道您所做的任何更改,因为将item
分配给itemToUpdate
不会产生任何结果。而是指定尝试使用:
context.Items.ApplyCurrentValues(item);
答案 1 :(得分:2)
为此,请在执行ApplyCurrentValues
后尝试对象上下文中的GetObjectKey
方法。然后所有值都应该更新。
答案 2 :(得分:0)
你正在处理引用...而不是映射属性,而不是想改变指针就行了!