public override int SaveChanges() { var modifiedEntries = ChangeTracker.Entries() .Where(x => x.Entity is IAuditableEntity && (x.State == System.Data.Entity.EntityState.Added || x.State == System.Data.Entity.EntityState.Modified)); foreach (var entry in modifiedEntries) { // IAuditableEntity IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity; if (auditableEntity != null) { ProcAuditableEntity(entry, auditableEntity); } // ISaveEntity ISaveEntity saveEntity = entry.Entity as ISaveEntity; if (saveEntity != null) { ProcSaveEntity(saveEntity); } } return(base.SaveChanges()); }
protected virtual void ProcSaveEntity(EntityEntry entry) { // ISaveEntity ISaveEntity saveEntity = entry.Entity as ISaveEntity; if (saveEntity != null) { saveEntity.OnSave(this); } }
public override int SaveChanges() { var modifiedEntries = ChangeTracker.Entries() .Where(x => x.Entity is IAuditableEntity && (x.State == EntityState.Added || x.State == EntityState.Modified)); foreach (var entry in modifiedEntries) { // IAuditableEntity IAuditableEntity auditableEntity = entry.Entity as IAuditableEntity; if (auditableEntity != null) { ProcAuditableEntity(entry, auditableEntity); } // ISaveEntity ISaveEntity saveEntity = entry.Entity as ISaveEntity; if (saveEntity != null) { ProcSaveEntity(saveEntity); } } // 削除対象のEntityで、IDeleteEntityを実装しているオブジェクトを見つける var deleteEntries = ChangeTracker.Entries() .Where(x => x.Entity is IDeleteEntity && (x.State == EntityState.Deleted)); foreach (var entry in deleteEntries) { // IDeleteEntity IDeleteEntity deleteEntity = entry.Entity as IDeleteEntity; if (deleteEntity != null) { ProcDeleteEntity(deleteEntity); } } return(base.SaveChanges()); }
public void RegisterSaveEntity(ISaveEntity saveEntity) { saveEntityHolder.Add(saveEntity); }
private void ProcSaveEntity(ISaveEntity entity) { entity.OnSave(); }