c# - 如何使用 POCO 和自定义 ObjectContext 正确更新 EF4 中的实体?

标签 c# entity-framework-4

使用描述的技术 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/

相关文章:

c# - 将拆分视频保存到数据库中并检索它们

c# - Razor 智能感知在 vs2013 中不起作用

sql-server - 是否有任何选项可以使用 Entity Framework (sql server 2008 r2 目标)对多个相关表进行批量插入?

c# - 自定义控件 Entity Framework 绑定(bind)

c# - Azure管道- 'The type or namespace name '基础设施“命名空间中不存在”

c# - AWS Cognito - 用户池 xxxx 不存在

c# - 如何删除 CookieContainer 中 1 个域下的 cookie

c# - SNIReadSyncOverAsync 和 WaitForSingleObject 阻塞 EF 性能?

c# - Entity Framework 4 - 在哪里放置 "ApplyCurrentValues"逻辑?

asp.net-mvc-4 - Asp.Net Json-Call 中带有 using 子句的 Dbcontext