public async Task Store(Subscription subscription, CancellationToken cancellationToken) { var entity = new { Active = true, subscription.SubscriptionId, subscription.Trigger, subscription.InitialRecordTime, subscription.ReportIfEmpty, subscription.Schedule?.Second, subscription.Schedule?.Hour, subscription.Schedule?.Minute, subscription.Schedule?.Month, subscription.Schedule?.DayOfMonth, subscription.Schedule?.DayOfWeek, subscription.Destination, subscription.QueryName }; var entityId = await _connection.ExecuteScalarAsync <int>(new CommandDefinition(SubscriptionRequests.Store, entity, cancellationToken : cancellationToken)); var parameters = subscription.Parameters.Select(parameter => new { SubscriptionId = entityId, parameter.Name }).ToArray(); var parameterIds = (await _connection.BulkInsertReturningAsync(SubscriptionRequests.StoreParameter, parameters, cancellationToken: cancellationToken)).ToArray(); var values = subscription.Parameters.SelectMany((p, i) => p.Values.Select(value => new { ParameterId = parameterIds[i], Value = value })).ToArray(); await _connection.BulkInsertAsync(SubscriptionRequests.StoreParameterValue, values, cancellationToken : cancellationToken); }
public async Task <int[]> Store <T>(string command, T[] parameters, CancellationToken cancellationToken) => (await _connection.BulkInsertReturningAsync <T>(command, parameters, _transaction, cancellationToken: cancellationToken)).ToArray();