加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Dapper传递动态参数

发布时间:2020-12-16 01:52:32 所属栏目:百科 来源:网络整理
导读:我目前正在为Dapper编写包装器.此包装器强制每个查询都是存储过程. 在我的包装器中,我这样调用Dapper(有问题): public IEnumerableT SelectT(string storedProcName,dynamic param) { IEnumerableT results; using(var connection = new SqlConnection(_con
我目前正在为Dapper编写包装器.此包装器强制每个查询都是存储过程.

在我的包装器中,我这样调用Dapper(有问题):

public IEnumerable<T> Select<T>(string storedProcName,dynamic param) {
    IEnumerable<T> results;

    using(var connection = new SqlConnection(_connectionString) {
        results = connection.Query<T>(storedProcName,param,commandType: CommandType.StoredProcedure);
    }

    return results;
}

当我尝试将“param”传递给Query时,它告诉我“无法解析符号查询”.当我删除param pass时,它工作正常.

任何人都可以指出我正确的方向,以便我可以将动态参数(或类似的东西)传递给Dapper吗?

解决方法

您只需要更改param以键入object,当您调用它时,您可以使用匿名类型传递params.

public IEnumerable<T> Select<T>(string storedProcName,object param) {
    IEnumerable<T> results;

    using(var connection = new SqlConnection(_connectionString) {
        results = connection.Query<T>(storedProcName,commandType: CommandType.StoredProcedure);
    }

    return results;
}

然后你会这样称呼它:

var results = query.Select<Entity>("spname",new { Id = 2,Something = "test" });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读