получить вывод dapper с выполненным запросом - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть код, который выполняет запрос в sqlserver с доступом к dapper в исключении ошибки. Я хочу, чтобы запрос выполнялся с указанным параметром:

StringBuilder sql = new StringBuilder();
sql.AppendLine(" SELECT " + campoChave + " AS CODIGO, ");
sql.AppendLine("        " + campoSelecao + " AS DESCRICAO ");
sql.AppendLine("   FROM " + tabela);
sql.AppendLine("   where codigoidioma = @codigoIdioma");
sql.AppendLine("  ORDER BY " + campoSelecao);

IEnumerable entities2 = conexao.Query<ComboBoxGenerico>(sql.ToString(), new { codigoIdioma = 1 });

этот код с ошибкой. Я хочу получитьзапрос после выполнения dapper с помощью команды

Пример: выберите teste как codigo ..... где codigoidioma = 1

@ codigoIdioma ---> 1

1 Ответ

0 голосов
/ 05 февраля 2019

Запрос после выполнения команды почти всегда будет ... именно тем, что вы передали. Dapper не заменяет маркеры параметров - это было бы дырой в SQL-инъекции.Даже с инструментами, отслеживающими трафик SQL (мини-профилировщик, профилировщик SQL-сервера и т. Д.): Показанная команда будет включать токены параметров с параметрами, отправляемыми отдельно.

Мини-профилировщик подделывает это , (на дисплее) добавив к команде операторы declare, которые выглядят как параметры, чтобы вы могли запустить ее в SSMS - что даст вам что-то вроде:

declare @codigoidioma int = 1;
select teste as codigo ..... where codigoidioma = @codigoidioma

, но обратите внимание, что она осталасьпараметризованный (ish) даже здесь.

В случае dapper , в частности , есть некоторые исключения из общего правила "это будет то, что вы передали"касательно некоторых конкретных сценариев, таких как in @foo (для чего-то вроде List<int> для foo), где он будет генерировать соответствующее расширение параметра, но будет по-прежнему параметризован .

...