通过存储过程使用Dapper

问题描述 投票:-3回答:2

我正在使用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的形式获取存储过程输出。

c# stored-procedures asp.net-core dapper
2个回答
2
投票

我想稍微扩展一下。

在这种情况下,您将返回一个bool值,这意味着它只有一个结果。捕获单个结果的最佳方法是使用标量。这将确保我们的代码只返回一个值并且可以访问(正如Deepankshee和其他人已经提到的那样)。

您应该确保发出一个select命令,该命令只会在存储过程结束时返回一个结果(否则会失败)。

然后在你的c#代码中你需要调用:

var result = await conn.ExecuteScalarAsync<T>("Your procedure", new { arguments },
    commandType: CommandType.StoredProcedure);

请注意,你应该await这样,所以我们不阻止线程。


2
投票

您可以使用ExecuteScalarAsync()而不是ExecuteAsync()。因为它返回单个值。何时在SP中使用select语句

希望这有效

© www.soinside.com 2019 - 2024. All rights reserved.