类似于此处https://stackoverflow.com/a/42932812/1321510回答的问题,我们需要执行原始sql查询。对于查询,我们没有任何数据库上下文模型(因此,任何.FromSql
答案都将对我们不起作用)。但是,我们需要在现有事务(使用context.Database.BeginTransaction()
创建)中执行它。在SO上找到的所有解决方案均不适用于现有交易。
示例:
var connection = context.Database.GetDbConnection();
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
command.Transaction = context.Database.CurrentTransaction.GetDbTransaction();
var executeReader = command.ExecuteReader();
var values = new object[executeReader.FieldCount];
if (!executeReader.Read())
{
return values;
}
executeReader.GetValues(values);
return values;
}
}
提交事务然后抛出System.InvalidOperationException: 'This MySqlConnection is already in use. See https://fl.vu/mysql-conn-reuse'
。
异常中提供的链接似乎一点都没有帮助,因为我们既不使用异步也不使用连接,而是从中读取信息。
我们使用Pomelo.EntityFrameworkCore.MySql
作为数据库连接器。