我一直在尝试运行这段代码:
using System;
using Dapper;
using MySql.Data.MySqlClient;
namespace DapperTests
{
class Program
{
static void Main(string[] args)
{
using (var db = new MySqlConnection(@"mysql_connstr_here"))
{
var sql = @"
set @foo := (select count(*) from table1);
select table2.*, @foo from table2;";
var result = db.Query(sql);
}
Console.ReadLine();
}
}
}
但是我得到了以下异常:
System.NullReferenceException: '对象引用未设置为对象的实例。' 此异常最初是在此调用堆栈中引发的: MySql.Data.MySqlClient.MySqlConnection.Reader.set(MySql.Data.MySqlClient.MySqlDataReader)
我最初的猜测是该变量被视为SqlParameter,并且由于我没有传递任何参数,所以我的代码失败了。 有没有办法使用Dapper运行这样的查询?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
或者你可以使用有效的SQL变量声明来编写你的SQL语句:
var sql = @"declare @foo int = 0; select @foo;";注意:此代码已在Sql Server上测试,不适用于MySql。我不使用它。
我在Dapper文档中找到了这个:
所以我所需要做的就是在连接字符串中添加
Allow User Variables=True。它起作用了。