Я использую OrmLite для вызова хранимой процедуры, которая имеет необязательные параметры.Вызов хранимой процедуры с необязательными параметрами с помощью OrmLite
_dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name });
Этот оператор генерирует динамическую инструкцию sql с параметром @name. Но я не знаю, как передать null этому параметру, я попытался использовать DBNull.Value, но он не работает. Исключение: Данная клавиша не указана в словаре.
_dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name ?? System.Data.SqlTypes.SqlString.Null});
Извините, это был код psuedo, который я написал, исправить. Проблема здесь в том, что я могу вызвать SP, если я передаю некоторое значение или пустой параметр имени. Но у меня есть логика в DB, которая проверяет имя = null, поэтому, используя синтаксис выше, я не могу передать значение null или полностью избежать параметра передаваемого имени (что сделано в ADO.NET) – Sunny
«Должен объявить скалярную переменную @Name «Исключение возникает, когда я пытаюсь передать null. – Sunny
Сгенерированный SQL: exec sp_executesql N'EXEC dbo.sp_getcustomers @ name ', N' @ name nvarchar (20) '. Объявление параметра объявления отсутствует. С Dapper, сгенерированный sql, exec dbo.sp_getcustomers @ name = NULL – Sunny