除了Linq to SQL之外还有什么消耗INotifyPropertyChanging?

时间:2010-10-01 00:43:35

标签: .net linq-to-sql

从未使用INotifyPropertyChanging我想知道Linq to SQL以外的其他内容是否使用它?

如果Linq to SQL是唯一的用户,为什么System.ComponentModel中存在INotifyPropertyChanging

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanging.aspx

1 个答案:

答案 0 :(得分:1)

根据Reflector;)INotifyPropertyChanging用于Linq to SQL及其第三方模拟(如Devart.Data.Linq),以优化实体更改跟踪(将实体快照延迟到第一次更改)。

基本上,如果你加载X对象,拥有的DataContext将创建这些对象(快照)的X副本,如果它们没有实现INotifyPropertyChanging。

通过实现INotifyPropertyChanging,将只创建X PropertyChangingEventHandlers。但是,随着第一次更改的到来,DataContext开始克隆。

因此,实现INotifyPropertyChanging只有在你的类是DataContext(Linq to Sql)中的数据实体时才有意义,大量加载并主要用于读操作。

我还希望在Weaver项目中看到INotifyPropertyChanging的可选支持;)