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); } } }