数据集使这项工作很难完成。你们支持这一点吗,ADO.NET选项:对象数据类型支持当前处于评估期。在.NET中似乎没有快捷的方式来完成这项任务。假如它达到临界质量,我们将支持它。
Refresh的第一个参数值得注意一下,ADO.NET选项是一个枚举值,有两个选项:StoreWins或者是ClientWins。如果是StoreWins,那么,Refresh以后,product2的值将与数据库里的对应记录的值一致(修改会丢失);而如果ClientWins,则product2的值保持,并且提交以后,会把context提交的修改覆盖。其实,这两种方法均不完美,总会导致一部分修改丢失。
但是,这总比在不知情的情况下的覆盖要好。 另外,需要说明,上面的方法,只是对并发冲突的一种模拟,这样的模式,在处理并发冲突时会有问题。一般的处理方法是,当检测到并发冲突时,提示用户会重新从数据库载入数据,然后,ADO.NET选项让用户在新数据的情况下重新修改后再次提交,直到不再有并发冲突发生。#t#
我们已经知道如何增加、更新和删除实体记录,并将更改数据库记录。Entity Framework 通过Object Context 控制的ObjectStateManager 对象来跟踪变更,ObjectStateManager 将跟踪所有对实体对象的变更,在调用SaveChanges() 方法时,执行相应的T-SQL脚本。
ObjectStateManager比LINQ to SQL中DataContext 的变更跟踪功能更先进。下面,我们详细了解ADO.NET选项如何显示有用的变更跟踪信息。