Возможность добавления дополнительных данных в динамический sql-запрос C#

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть такая таблица в базе данных.

Таблица A

  • Столбец 1
  • Столбец 2
  • Столбец 3
  • Столбец 4
  • ActivityDate

В настоящее время у меня есть такой метод:

     private static string GenerateQuery(RequestModel requestModel)
    {
        var grouping = requestModel.ToGrouping();

        var whereClause = requestModel.ToWhereClause(grouping.WhereClause);

        var query = $@"SELECT      SUM(TableA.COlumnA) AS sumA,
                                    SUM(TableA.COlumnB) AS sumB,
                                    {grouping.GroupColumn}
                       FROM         TableA
                       {grouping.Join}
                       WHERE        TableA.ActivityDate BETWEEN @startDateTime AND @endDateTime
                       {whereClause}
                       {grouping.GroupBy}
                       {toLimit.OrderBy}";

        return query;
    }
  

ToGrouping и ToWhereClause — это методы расширения, которые позволяют возвращать левые соединения и строку where.
Теперь Grouping.groupcolumn возвращает столбцы, по которым нужно группировать. Как я могу добавить возможность добавления дополнительных данных. Например, если у groupcolumn есть имя и код, и я хочу вернуть оба. как я могу добавить дополнительные данные в этот метод.

Комментарии:

1. Я бы посоветовал быть очень осторожным при создании sql, подобного этому. Слишком легко ошибиться и открыть себя для атак SQL-инъекций.

2. Спасибо. это клиентский код, и у меня мало контроля. как я могу добавить дополнительные данные на основе группировки. Столбец.