public async Task <WorkflowInstance> SaveAsync( WorkflowInstance instance, CancellationToken cancellationToken = default) { var existingEntity = await dbContext .WorkflowInstances .Include(x => x.Activities) .Include(x => x.BlockingActivities) .FirstOrDefaultAsync(x => x.InstanceId == instance.Id, cancellationToken: cancellationToken); if (existingEntity == null) { var entity = Map(instance); await dbContext.WorkflowInstances.AddAsync(entity, cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); return(Map(entity)); } else { dbContext.ActivityInstances.RemoveRange(existingEntity.Activities); dbContext.BlockingActivities.RemoveRange(existingEntity.BlockingActivities); existingEntity.Activities.Clear(); existingEntity.BlockingActivities.Clear(); var entity = mapper.Map(instance, existingEntity); dbContext.WorkflowInstances.Update(entity); await dbContext.SaveChangesAsync(cancellationToken); return(Map(entity)); } }
public async Task <WorkflowDefinitionVersion> AddAsync(WorkflowDefinitionVersion definition, CancellationToken cancellationToken = default) { var entity = Map(definition); await dbContext.WorkflowDefinitionVersions.AddAsync(entity, cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); return(Map(entity)); }
public async Task SaveAsync( WorkflowInstance instance, CancellationToken cancellationToken = default) { var document = Map(instance); await dbContext.WorkflowInstances.Upsert(document) .On(x => new { x.Id }) .RunAsync(cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); }
public async Task <WorkflowDefinitionVersion> SaveAsync( WorkflowDefinitionVersion definition, CancellationToken cancellationToken = default) { var document = Map(definition); await dbContext.WorkflowDefinitionVersions.Upsert(document) .On(x => new { x.Id }) .RunAsync(cancellationToken); await dbContext.SaveChangesAsync(cancellationToken); return(definition); }