internal static void Restore(T entity, NavigationBackupSet backup) { if (entity == null || backup == null || backup.Values == null || backup.Values.Length == 0 || backup.Values.Length != PropertiesToBackup.Count) { return; } for (int index = 0; index < PropertiesToBackup.Count; index++) { var propInfo = PropertiesToBackup[index]; propInfo.SetValue(entity, backup.Values[index], null); } }
protected virtual void DeleteEntity <T>(T entity) where T : class { NavigationBackupSet backupSet = null; try { backupSet = NavigationBackup <T> .BackupAndReset(entity); Context.Write <T>().Attach(entity); Context.Write <T>().Remove(entity); Context.SaveChanges(); } finally { NavigationBackup <T> .Restore(entity, backupSet); } }
protected virtual void UpdateEntity <T>(T entity) where T : class { NavigationBackupSet backupSet = null; try { backupSet = NavigationBackup <T> .BackupAndReset(entity); Context.Entry(entity).State = EntityState.Modified; Context.SaveChanges(); Context.Entry(entity).State = EntityState.Detached; } finally { NavigationBackup <T> .Restore(entity, backupSet); } }