Update: Repository Monitor Deferred Actions

Defer code in 'before commit' to run 'after commit'
This commit is contained in:
Gary Sharp
2013-07-04 15:26:43 +10:00
parent 9076b34f83
commit 070681888e
2 changed files with 28 additions and 4 deletions
@@ -74,11 +74,18 @@ namespace Disco.Data.Repository.Monitor
internal static void UpdateAfterEventFromEntryState(RepositoryMonitorEvent monitorEvent)
{
monitorEvent.afterCommit = true;
if (monitorEvent.EventType == RepositoryMonitorEventType.Added)
{
// Update Entity Key for Added Events
monitorEvent.EntityKey = DetermineEntityKey(monitorEvent.objectEntryState);
}
// Execute Deferred Actions
if (monitorEvent.executeAfterCommit != null)
foreach (var deferredAction in monitorEvent.executeAfterCommit)
deferredAction.Invoke(monitorEvent);
}
internal static RepositoryMonitorEvent EventFromEntryState(DiscoDataContext dbContext, DbEntityEntry entityEntry, ObjectStateEntry entryState)