首页 > 解决方案 > 当sql语句包含@时如何将Dapper与mysql一起使用

问题描述

当我的 SQL 语句包含“@”时,我遇到了麻烦

似乎 Dapper 使用了 '@' 并抛出异常:必须拒绝“@rownum”。

但这不是 Dapper 参数。

我需要一些帮助。这是我的代码:

var sqlStr = @"SELECT 
                    @rownum := @rownum +1 AS rownum, 
                    e.* FROM (SELECT @rownum := 0) r,
                    (SELECT 
                        f.nickname,
                        u.charm_value 
                    FROM 
                        user_info u 
                        LEFT JOIN fans_info f ON u.openid=f.openid
                    ORDER BY 
                        u.charm_value DESC,u.create_time DESC LIMIT 0,500) e ";
return conn.Query<Top500Response>(sqlStr).ToList();

标签: c#mysqldapper

解决方案


Dapper 将按原样传递它,因为它没有绑定到参数(请参阅如何在 Dapper 查询中转义 '@'?)。

我认为错误实际上来自 MySQL,您需要做的是设置:

Allow User Variables=True

在连接字符串中(参见allow-user-variables


推荐阅读