在我的ObjectContext的生命周期中,我收到一条消息,告诉我一个新实体已被其他进程添加到数据源(即没有被我的ObjectContext跟踪)。如何在不重新创建的情况下将此实体添加到本地ObjectContext中?EntityFramework长时间运行ObjectContext:如何检测未由ObjectContext跟踪的数据源更改
我看过ObjectContext.Refresh()
,但我不确定这是否是正确的方向。
在我的ObjectContext的生命周期中,我收到一条消息,告诉我一个新实体已被其他进程添加到数据源(即没有被我的ObjectContext跟踪)。如何在不重新创建的情况下将此实体添加到本地ObjectContext中?EntityFramework长时间运行ObjectContext:如何检测未由ObjectContext跟踪的数据源更改
我看过ObjectContext.Refresh()
,但我不确定这是否是正确的方向。
如果实体在您的代码中可用,请使用Attach方法。
如果此对象在代码中不可用,则解决方案实际上是使用StoreWins RefreshMode为该对象添加到的集合调用Refresh方法。
我建议你也看看Self-Tracking Entities。
问题标题中没有答案 - 长时间运行的对象上下文在EF中不是一个好主意。理想情况下,法团应尽可能在短时间内保持活力。
我有点期待这一点,但我如何有效地追踪从对象上下文中分离的实体图? – djskinner 2011-04-01 13:16:12
一些为你阅读:为什么长期居住环境不好 - http://stackoverflow.com/questions/3653009/entity-framework-and-connection-pooling/3653392#3653392和什么是自我跟踪实体的目的 - http://stackoverflow.com/questions/5091974/what-is-the-purpose-of-self-tracking-entities/5092097#5092097。请注意,STE只能在EFv4中使用。 – 2011-04-01 19:02:30
查看我对@DevArt有关STE的回复。 – djskinner 2011-04-05 08:01:26
此外,我长期运行的ObjectContexts是坏的,DbSet.Local属性中的点是什么。对我来说,如果我们要将它直接绑定到可能会延长应用程序生命周期的UI,那么意味着长时间运行的对象上下文是可以的。 http://blogs.msdn.com/b/adonet/archive/2011/02/01/01/using-dbcontext-in-ef-feature-ctp5-part-7-local-data.aspx – djskinner 2011-04-05 08:02:53