В настоящее время я использую dapper в одном из наших проектов, и мы все время выполняем хранимые процедуры. В первых нескольких методах все работало нормально, когда выполняемая хранимая процедура возвращает строки.
Прямо сейчас я сталкиваюсь с проблемой, когда пытаюсь получить данные из хранимой процедуры, которая при обнаружении возвращает информацию. Это очень распространенный вариант использования (например, регистрация пользователей в приложении). При вызове метода Query
, когда sproc не возвращает ни одной строки, dapper выдает ArgumentException
с сообщением:
«При использовании API с несколькими отображениями убедитесь, что вы установили параметр splitOn, если у вас есть ключи, отличные от Id Parameter name: splitOn»
Я использую следующий код:
using (var conn = new SqlConnection(connString))
{
conn.Open();
return conn.Query<Customer>(
sql: "prc_GetCustomer",
param: new { Parameter = p },
commandType: CommandType.StoredProcedure).FirstOrDefault();
}
Я знаю, что существует метод Execute
, который следует использовать, когда ожидается, что процедура не вернет ни одной строки, но на самом деле это не моя ситуация. Кроме того, исключение dapper вводит в заблуждение, поскольку я не использую множественное отображение.
Любые идеи? Благодарность!
1 ответ
Если запрос не возвращает сетки результатов, следует использовать Execute, а не Query.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.