Сборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
Значение свойства
Тип: TypeCommandЗначение по умолчанию Auto, если иное не указано в параметре NeData:Sql:CommandType файла конфигурации.
Данное свойство является калькой с одноименного свойства класса SqlCommand. Однако, в текущей реализации, помимо значений StoredProcedure, TableDirect, Text, это свойство может принимать еще одно дополнительное значение - Auto (используется по умолчанию).
Свойство CommandType работает совместно с CommandText. В свойстве CommandText можно указать текст SQL-запроса, либо имя хранимой процедуры. Чтобы запрос был правильно интерпретирован, необходимо указывать CommandType, по крайней мере в случае с классом SqlCommand.
В классе SqlClient, при типе команды Auto, система пытается автоматически определить, что указано в CommandText: обычный SQL-запрос (Text) или хранимая процедура (StoredProcedure).
Эта операция не требует больших затрат времени. Система проверяет значение CommandText по следующему примитивному шаблону:
(SELECT(.+?)FROM)|(DELETE(\s+)FROM)|(UPDATE(.+?)SET)|(INSERT(\s+)INTO)
Если CommandText совпадает с этим шаблоном, то система считает, что это Text.
Если проверка по шаблону даст отрицательный результат, то система проверяет запрос на пробелы (включая переводы строк). Если пробелы есть, то CommandText интерпретируется как Text.
В остальных случаях, CommandText будет восприниматься в качестве StoredProcedure.
В следующем примере явно устанавливается тип команды StoredProcedure, чтобы запрос выполнялся как хранимая процедура. В свойстве CommandText указано имя хранимой процедуры MyProcedure. Запрос выполняется методом ExecuteNonQuery (без возврата результатов).
using (SqlClient client = new SqlClient()) { client.CommandType = TypeCommand.StoredProcedure; client.CommandText = "MyProcedure"; client.ExecuteNonQuery(); }