Dapper 多参数存储过程查询不会从数据库返回任何内容

Posted

技术标签:

【中文标题】Dapper 多参数存储过程查询不会从数据库返回任何内容【英文标题】:Dapper multi-parameter stored procedure query returns nothing back from database 【发布时间】:2018-08-20 19:32:54 【问题描述】:

我一直使用 Dapper 作为 .NET Core Web Api 的 ORM。

当使用 Dapper 通过一个参数从我的数据库中查询存储过程时,它的工作方式完全符合预期。当我添加多个参数时,它不会像应有的那样将任何内容返回给我的数据模型。

我怀疑这与我的语法或我构建查询的方式有关。我在下面使用的存储过程在 SSMS 查询窗口中执行时按预期工作。

这是我的 DAL 中包含 Dapper 查询的方法:

public List<Players> C_GetAllActivePlayersInSport(int orgID, int sportID)
    
        using (IDbConnection db = new SqlConnection(_connectionString))
        
            var returnedData = db.Query<Players>("dbo.spPlayers_GetAllActivePlayers_by_Sport @orgID, @sportID", new  orgID = orgID, sportID = sportID ).ToList();

            return returnedData;
        
    

传入的值会传到上面的方法和查询中,但是查询执行后,会返回一个计数为0的列表。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

试试:

var returnedData = db.Query<Players>(
    "dbo.spPlayers_GetAllActivePlayers_by_Sport",
        new  orgID, sportID , commandType: CommandType.StoredProcedure).ToList();

(注意:.AsList() 会稍微好一点)

【讨论】:

这解决了这个问题。我是否也应该将 commandType: CommandType.StoredProcedure 用于单参数存储过程查询?

以上是关于Dapper 多参数存储过程查询不会从数据库返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

DB2 - 使用带有字符串数组参数的 Dapper 选择查询将不会返回正确的结果

如何从 Dapper 查询返回 null 而不是 default(T)?

Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程案例演示

Dapper系列 作者:懒懒的程序员一枚

从 SQL 中的存储过程返回值 true 或 false,并在带有 dapper 的 asp core3 中使用它

数据集可以使用存储过程返回多少个表