今天使用Dapper进行查询时,需要查询前n条数数据,其中n是变量,刚开始写法如下:
students = dbConnection.Query<Student>(string.Format("select top @top * from Student"),new { top=10}).ToList();
但是会提示这个异常

纳尼...这乍一看没啥问题,于是考虑了一会儿,突然想起来,SqlServer在查询前n条数据,如果n是变量,一定要用()括起来,即:
students = dbConnection.Query<Student>(string.Format("select top (@top) * from Student"),new { top=10}).ToList();
然后,就顺利查出了数据(数据库一共不到10条数据):

其实想想这个错误的原因就是平时使用SqlServer写存储过程的时候没注意这个问题:如果直接编写SQL语句执行的话,想要指定top为可变参数,也需要用()括起来
虽然问题不大,但还是记录一下吧,总觉得以后还会用到,也给遇到这个问题的人提个醒,别在坑里越陷越深(PS:刚开始我还以为是Dapper的问题,哈哈,还好思路转过来了)
本文分享了使用Dapper框架查询数据库时,如何正确设置变量作为查询前N条数据的Top参数。通过对比两种SQL语句的写法,强调了在Dapper中使用变量作为Top参数时,必须将其包裹在括号内的细节,避免语法错误。
516

被折叠的 条评论
为什么被折叠?



