有没有办法在ASP.NET应用程序的上下文之间跟踪EF实体更改?
自我跟踪实体对我来说效果不佳,因为它主要是为WCF设计的。我发现的跟踪POCO变化的所有方法都是基于共享的上下文。
答案 0 :(得分:2)
不,您必须自己跟踪更改,或者您必须使用STE并将它们存储在回发之间的ViewState / Session中。
编辑:如果您使用简单实体,您可以使用某些方法来跟踪更改,但首先您必须从数据库加载实体(=其他数据库查询)。然后,您可以使用ObjectContext实例的ApplyCurrentValues方法。此appraoch不适用于updating object complex graphs.
答案 1 :(得分: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)来完成的。您可以使用此函数的结果来确定上次更改表的时间以及表的主键。据我所知,你只能在定义了主键的表中使用它。然后,您可以创建一个表值函数或一个返回已更改记录的视图。使用Entity Framework可以轻松使用这两种方法。