如何确定模型编辑后哪些字段已更改
答案 0 :(得分:1)
如果您使用Linq to SQL,GetModifiedMembers方法将获取tybe对象的参数,并返回System.Data.Linq.ModifiedMemberInfo对象的数组。 DataContext中的每个Table类都有一个可以在任何实体上调用的GetModifiedMembers方法。
http://msdn.microsoft.com/en-us/library/system.data.linq.itable.getmodifiedmembers.aspx
在Entity Framework中,使用ObjectStateManager,可以访问所有这些更改信息,如对象状态(添加/修改/删除),修改属性,原始值和当前值
IEnumerable<ObjectStateEntry> changes =
this.ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Deleted | EntityState.Modified);
答案 1 :(得分:1)
您可以在实体上实现INotifyPropertyChanged。您需要为每个属性触发PropertyChanged事件...因此,您需要进行一些重构才能实现此功能。它是用.NET实现它的唯一内置方法。
如果您不想手动实现INotifyPropertyChanged,可以使用PostSharp更新类并在编译时调整属性。但是,这需要预先做更复杂的工作。