确定绑定时哪些字段已更改

时间:2009-05-29 19:30:51

标签: asp.net-mvc

如何确定模型编辑后哪些字段已更改

2 个答案:

答案 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更新类并在编译时调整属性。但是,这需要预先做更复杂的工作。