【发布时间】:2011-04-23 17:01:53
【问题描述】:
是否有任何方法可以跟踪 ASP.NET 应用程序的上下文之间的 EF 实体更改?
自我跟踪实体不适用于我,因为它主要是为 WCF 设计的。我发现的所有跟踪 POCO 更改的方法都是面向共享上下文的。
【问题讨论】:
标签: c# .net asp.net entity-framework
是否有任何方法可以跟踪 ASP.NET 应用程序的上下文之间的 EF 实体更改?
自我跟踪实体不适用于我,因为它主要是为 WCF 设计的。我发现的所有跟踪 POCO 更改的方法都是面向共享上下文的。
【问题讨论】:
标签: c# .net asp.net entity-framework
不,您必须自己跟踪更改,或者您必须使用 STE 并将它们存储在回发之间的 ViewState/Session 中。
编辑:如果您使用简单实体,您可以使用一些方法为您跟踪更改,但首先您必须从数据库加载实体(= 附加数据库查询)。然后,您可以使用例如 ObjectContext 实例的 ApplyCurrentValues 方法。此方法不适用于updating object complex graphs.
【讨论】:
我建议使用 SQL Server 中内置的更改跟踪 (http://technet.microsoft.com/en-us/library/cc280462(v=sql.105).aspx)。此框架允许您识别给定行是否已更改,或者即使列已更改。您确实需要以某种方式管理从何时开始更改的问题。 SQL Server 中的更改跟踪是通过将表和所需的“从何时开始”修订号传递给 ChangeTable 函数 (http://technet.microsoft.com/en-us/library/bb934145.aspx) 来完成的。您可以使用此函数的结果来确定上次更改表的时间以及表的主键。据我所知,您只能将其与定义了主键的表一起使用。然后,您可以创建一个表值函数或返回已更改记录的视图。使用 Entity Framework 可以轻松使用这两者。
【讨论】: