Example #1
0
        private void InsertCommand(SavedCommand c, SqlConnection connection)
        {
            var serializedCommand = c.Serialize();

            const string query = @"
INSERT INTO logs.Command
(
    AggregateIdentifier, ExpectedVersion,
    CommandIdentifier, CommandClass, CommandType, CommandData,
    IdentityTenant, IdentityUser,
    SendStatus, SendError,
    SendScheduled, SendStarted, SendCompleted, SendCancelled
)
VALUES
( @AggregateIdentifier, @ExpectedVersion, @CommandIdentifier, @CommandClass, @CommandType, @CommandData, @IdentityTenant, @IdentityUser, @SendStatus, @SendError, @SendScheduled, @SendStarted, @SendCompleted, @SendCancelled )";

            using (var command = new SqlCommand(query, connection))
            {
                var parameters = command.Parameters;

                parameters.AddWithValue("AggregateIdentifier", serializedCommand.AggregateIdentifier);
                parameters.AddWithValue("ExpectedVersion", serializedCommand.ExpectedVersion ?? (object)DBNull.Value);

                parameters.AddWithValue("CommandIdentifier", serializedCommand.CommandIdentifier);
                parameters.AddWithValue("CommandClass", serializedCommand.CommandClass);
                parameters.AddWithValue("CommandType", serializedCommand.CommandType);
                parameters.AddWithValue("CommandData", serializedCommand.CommandData);

                parameters.AddWithValue("IdentityTenant", serializedCommand.IdentityTenant);
                parameters.AddWithValue("IdentityUser", serializedCommand.IdentityUser);

                parameters.AddWithValue("SendStatus", (object)serializedCommand.SendStatus ?? DBNull.Value);
                parameters.AddWithValue("SendError", (object)serializedCommand.SendError ?? DBNull.Value);

                parameters.AddWithValue("SendScheduled", (object)serializedCommand.SendScheduled ?? DBNull.Value);
                parameters.AddWithValue("SendStarted", (object)serializedCommand.SendStarted ?? DBNull.Value);
                parameters.AddWithValue("SendCompleted", (object)serializedCommand.SendCompleted ?? DBNull.Value);
                parameters.AddWithValue("SendCancelled", (object)serializedCommand.SendCancelled ?? DBNull.Value);

                try
                {
                    command.Connection.Open();
                    command.ExecuteNonQuery();
                }
                catch (SqlException ex) { throw new SqlInsertException($"The command ({serializedCommand.CommandType}) could not be saved.", ex); }
            }
        }