Dapper 执行带参数的SQL语句时,报"必须声明标量变量@xxx"

最近在学习轻量级的ORM——Dapper,同时也在尝试着自己实现一些功能。

但是当尝试拼接Sql,在填入参数的时候出了一些问题。

以下是示例代码,首先是声明一个SqlCommand对象。

                    SqlCommand cmd = new SqlCommand();
                    //构建SQL语句
                    cmd.CommandText = @"SELECT * FROM Test WHERE abc=@test";

                    //构建SQL Parameter
                    SqlParameter parameter = new SqlParameter();
                    parameter.ParameterName = "test";
                    parameter.Value = "test";
                    cmd.Parameters.Add(parameter);
然后执行查询语句

                //执行查询语句
                var result = Connection.QuerySingleOrDefault(cmd.CommandText, cmd.Parameters);
然后此时会出现如下错误:

必须声明标量变量@test. 然而很明显,我们在SqlCommand中已经添加了名为@test的参数。那么仍然在报这个问题。

那么问题究竟出在哪儿?答案就是在Dapper执行Query时,并没有成功的将SqlParameters对象填充进去。

该如何解决呢?我们可以使用Dapper所定义的DynamicParameters。

                    DynamicParameters parameters = new DynamicParameters();
                    //参数名,value
                    parameters.Add("test", "test");
这个DynamicParameters官方的解释: A bag of parameters that can be passed to the Dapper Query and Execute methods。

不懂的自行Google,哈哈。

问题解决,(o゜▽゜)o☆[BINGO!]


你可能感兴趣的:(ORM)