public static void RollBack(this DataContext dataContext) { ChangeSet pendingChanges = dataContext.GetChangeSet(); foreach (var insertion in pendingChanges.Inserts) { dataContext.GetTable(insertion.GetType()).InsertOnSubmit(insertion); } foreach (var deletion in pendingChanges.Deletes) { dataContext.GetTable(deletion.GetType()).DeleteOnSubmit(deletion); } foreach (var update in pendingChanges.Updates) { dataContext.Refresh(RefreshMode.OverwriteCurrentValues, update); IPropertyChangedNotifier updateNotify = update as IPropertyChangedNotifier; foreach (PropertyInfo propertyInfo in update.GetType().GetProperties()) { updateNotify.NotifyPropertyChanged(propertyInfo.Name); } } }
protected override void OnExit(IInvocation invocation) { IPropertyChangedNotifier propertyChangedNotifier = invocation.Proxy as IPropertyChangedNotifier; if (propertyChangedNotifier != null) { string propertyName = invocation.Member.Name; MyClass_b.States.Add(StateTypes.Notify); propertyChangedNotifier.OnPropertyChanged(invocation.Proxy, propertyName); } }