使用描述的技术 here我启动并运行了一个简单的 POCO EF4 模型。保存新的和删除很简单(分别使用 AddObject()
和 DeleteObject()
)。但是我发现更新对象的唯一方法是检索对象的存储版本并使用正在保存的对象的新值手动更新其属性。当然有更好的方法吗?
我的 ObjectContext
已断开连接 - 换句话说,我为模型上的每个操作使用一个新的 ObjectContext
实例。
谢谢。
最佳答案
使用 stub 技术:
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) 来抵消这种情况,只有在不存在时才附加。
关于c# - 如何使用 POCO 和自定义 ObjectContext 正确更新 EF4 中的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493970/