/// <summary> /// Implements the interface. This causes the hook to only run for objects that are assignable to TEntity. /// </summary> public void Hook(object entity, HookEntityMetadata metadata, IUnitOfWork uow) { if (entity is TEntity typedEntity) { Hook(typedEntity, metadata, uow); } }
/// <summary> /// Implements the interface. This causes the hook to only run for objects that are assignable to TEntity. /// </summary> public void Hook(object entity, HookEntityMetadata metadata, IDbContext dbContext) { if (entity is TEntity typedEntity) { Hook(typedEntity, metadata, dbContext); } }
/// <summary> /// Implements the interface. This causes the hook to only run for objects that are assignable to TEntity. /// </summary> public void Hook(object entity, HookEntityMetadata metadata) { if (entity is TEntity typedEntity) { Hook(typedEntity, metadata); } }
private void RunHooks <THook>(IEnumerable <EntityEntry> entries) where THook : IHook { foreach (var entry in entries) { var hooks = _provider.GetServices <THook>() .Where(x => (x.HookState & entry.State) == entry.State); foreach (var hook in hooks) { var metadata = new HookEntityMetadata(entry); hook.Hook(entry.Entity, metadata); } } }
/// <summary> /// The logic to perform per entity before the registered action gets performed. /// This gets run once per entity that has been changed. /// </summary> protected abstract void Hook(TEntity entity, HookEntityMetadata metadata, IUnitOfWork uow);
/// <summary> /// The logic to perform per entity after the registered action gets performed. /// This gets run once per entity that has been changed. /// </summary> protected abstract void Hook(TEntity entity, HookEntityMetadata metadata, IDbContext context);
/// <summary> /// The logic to perform per entity before the registered action gets performed. /// This gets run once per entity that has been changed. /// </summary> /// <param name="entity">The entity that is processed by Entity Framework.</param> /// <param name="metadata">Metadata about the entity in the context of this hook - such as state.</param> protected abstract void Hook(TEntity entity, HookEntityMetadata metadata);