Exemplo n.º 1
0
        internal SqlCommand CreateUpdateStatement(Dictionary <string, PropertyChange> changes, string tableName, string keyName, object keyValue)
        {
            if (changes.Count == 0)
            {
                throw new InvalidOperationException("No changes detected");
            }

            var command = new SqlCommand();
            var columns = new List <string>();

            foreach (var change in changes)
            {
                columns.Add($"[{change.Key}] = @{change.Key}");
                command.Parameters.AddWithValue(change.Key, change.Value.NewValue);
            }

            columns.Add("[UpdatedBy] = @UpdatedBy");
            command.Parameters.AddWithValue("UpdatedBy", auditor.UserId);
            columns.Add("[UpdatedOn] = @UpdatedOn");
            command.Parameters.AddWithValue("UpdatedOn", auditor.Now());
            command.Parameters.AddWithValue(keyName, keyValue);
            command.CommandText = string.Format(UpdateStatementTemplate, tableName, string.Join(", ", columns), keyName);

            return(command);
        }