我正在使用dapper ORM在asp.net内核上工作。我想在dapper中执行存储过程并以布尔值获取结果。我如何实现这一目标?
实际上,在存储过程中,我返回0或1,但是当响应返回到代码中时,结果为-1,我感到困惑,我仅返回0或1。
using (var connection = new SqlConnection(connectionString))
{
// Create User Connection
var queryParameters1 = new DynamicParameters();
queryParameters1.Add("@ConnectionId", connectionId);
queryParameters1.Add("@UserTokenId", tokenResult?.Id);
response = await connection.ExecuteAsync(
"Proc_CreateUserConnection",
queryParameters1,
commandType: CommandType.StoredProcedure);
}
我想以布尔值或0或1的形式获取存储过程的输出。
答案 0 :(得分:2)
您可以使用ExecuteScalarAsync()而不是ExecuteAsync()。因为它返回一个值。什么时候将在SP中使用select语句
希望这行得通
答案 1 :(得分:2)
我只想对此稍作扩展。
在这种情况下,您将返回一个bool值,这意味着它是单个结果。捕获单个结果的最佳方法是使用标量。这将确保我们的代码仅返回和访问一个值(如Deepankshee等人已经提到的那样)。
您应该确保发出选择命令,该命令只会在存储过程结束时返回一个结果(否则将失败)。
然后在您的C#代码中需要调用:
var result = await conn.ExecuteScalarAsync<T>("Your procedure", new { arguments },
commandType: CommandType.StoredProcedure);
也请注意,您应该对此await
进行Updating dependencies
: mmap() failed: [12] Cannot allocate memory
: mmap() failed: [12] Cannot allocate memory
: PHP Fatal error: Out of memory (allocated 533733376) (tried to allocate 4096 bytes) in /usr/share/php/Composer/DependencyResolver/RuleSetGenerator.php on line 126
: Out of memory (allocated 533733376) (tried to allocate 4096 bytes) in /usr/share/php/Composer/DependencyResolver/RuleSetGenerator.php on line 126
,以免阻塞线程。