EF记录数据变更方法
在使用SQLServer时,通常情况下使用SQLServer自带管理器可以查看到数据变更的记录。如果在程序用需要更灵活的记录这些信息,则可以通过EF的ObjectStateManager属性的相关方法实现。
ObjectStateManager.GetObjectStateEntries 方法
返回具有给定状态的对象或关系的 ObjectStateEntry 对象的集合。
命名空间: System.Data.Objects
程序集: System.Data.Entity(在 System.Data.Entity.dll 中)
语法:
1 | public IEnumerable<ObjectStateEntry> GetObjectStateEntries( |
参数:
state
类型:System.Data.EntityState
用于筛选返回的 ObjectStateEntry 对象的 EntityState。
返回值:
类型:System.Collections.Generic.IEnumerable
具有给定 EntityState 的 ObjectStateEntry 对象的集合。
备注:
EntityState 是一个位字段,因此,通过对多个 EntityState 值执行按位或操作,在一次调用中即可检索多个状态的状态项。
例如我们需要获取修改过的记录,则
1 | entities.ObjectStateManager.GetObjectStateEntries(EntityState.Modified) |
获取添加或删除的记录
1 | entities.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted) |
如果要记录某一个表的某一个字段的变更情况,则需要使用GetModifiedProperties方法:
1 | var str = "propertyname"; //需要记录的字段名 |
EF记录数据变更方法