最近在学习轻量级的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!]