我正在使用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的形式获取存储过程输出。
我想稍微扩展一下。
在这种情况下,您将返回一个bool值,这意味着它只有一个结果。捕获单个结果的最佳方法是使用标量。这将确保我们的代码只返回一个值并且可以访问(正如Deepankshee和其他人已经提到的那样)。
您应该确保发出一个select命令,该命令只会在存储过程结束时返回一个结果(否则会失败)。
然后在你的c#代码中你需要调用:
var result = await conn.ExecuteScalarAsync<T>("Your procedure", new { arguments },
commandType: CommandType.StoredProcedure);
请注意,你应该await
这样,所以我们不阻止线程。
您可以使用ExecuteScalarAsync()而不是ExecuteAsync()。因为它返回单个值。何时在SP中使用select语句
希望这有效