通过存储过程使用Dapper

时间:2019-03-27 06:51:32

标签: c# stored-procedures asp.net-core dapper

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

2 个答案:

答案 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 ,以免阻塞线程。