使用描述的技术here我启动并运行了一个简单的POCO EF4模型。保存新内容和删除很简单(分别使用AddObject()
和DeleteObject()
)。但是,更新对象的唯一方法是检索对象的存储版本,并使用保存对象中的新值手动更新其属性。当然有更好的方法吗?
我的ObjectContext
已断开连接 - 换句话说,我为模型上的每个操作使用了一个新的ObjectContext
实例。
感谢。
答案 0 :(得分:4)
使用存根技术:
public void UpdateOrder(Order o)
{
var stub = new Order { Id = o.OrderId }; // create stub with EntityKey
ctx.Orders.Attach(stub); // attach stub to graph
ctx.ApplyCurrentValues("Orders", o); // override stub with values.
ctx.SaveChanges();
}
如果实体已经在图表中,您将获得OSM异常(具有密钥的实体已存在)。
我通过首先检查对象是否存在于图形中来尝试这一点(TryGetObjectStateEntry),如果不存在则仅附加。