现有交易中的Entity Framework Core手动sql查询

时间:2019-02-27 12:47:06

标签: mysql transactions entity-framework-core

类似于此处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作为数据库连接器。

0 个答案:

没有答案