2010-10-11 213 views
2

有什么方法可以跟踪用于ASP.NET应用程序的上下文之间的EF实体更改吗?实体框架变更跟踪

自我跟踪实体对我来说效果不佳,因为它主要是为WCF设计的。所有追踪POCO变化的方法都是以共享上下文为导向的。

回答

2

不,您必须自己跟踪更改,或者您必须使用STE并将它们存储在ViewState/Session回传之间。

编辑:如果你使用简单的实体,你可以使用一些方法来跟踪你的变化,但首先你必须从数据库(=额外的数据库查询)加载实体。然后,您可以使用ObjectContext实例的ApplyCurrentValues方法。此Appraoch不适用于updating object complex graphs.

0

我建议使用内置于SQL Server中的更改跟踪(http://technet.microsoft.com/en-us/library/cc280462(v=sql.105).aspx)。该框架允许您识别给定的行是否发生了更改,或者即使列已更改。你确实需要以某种方式管理从何时起改变的问题。 SQL服务器中的更改跟踪是通过将表格和'自何时'版本号传入ChangeTable函数(http://technet.microsoft.com/en-us/library/bb934145.aspx)来完成的。您可以使用此函数的结果来确定表最后一次更改的时间以及表的主键。据我所知,只能在定义了主键的表中使用它。然后,您可以创建一个表值函数或一个返回已更改记录的视图。这些都很容易使用实体框架消耗。

+0

(http://msdn.microsoft.com/zh-cn/data/hh859577.aspx映射到表值函数)链接到如何使用来自Entity的表值函数。 – Mauser 2014-01-24 17:12:00