Соединение уже в транзакции и не может участвовать в другой транзакции - PullRequest
0 голосов
/ 26 октября 2018

Я вызываю этот метод:

    public IEnumerable<T> ExecuteObject<T>(string query, Func<DbDataReader, T> map)
    {

        var  trx = miContexto.Database.BeginTransaction();
        var entities = new List<T>();

        miContexto.Database.OpenConnection();

        using (var command = miContexto.Database.GetDbConnection().CreateCommand())
        {
            command.CommandText = query;
            command.CommandType = CommandType.Text;
            command.Transaction = trx.GetDbTransaction();

            using (var result = command.ExecuteReader())
            {
                while (result.Read())
                {
                    entities.Add(map(result));
                }
            }
        }

        trx.Commit();
        trx.Dispose();
        return entities;
    }

От контроллера MVC по следующим строкам:

        var result = c.ExecuteObject(
                "SELECT TOP 10 Nombre, Apellido FROM Persona "
                + " GROUP BY Nombre, Apellido ORDER BY Apellido DESC",
                x => new Persona {
                    Nombre = (string)x[0],
                    Apellido = (string)x[1], });

        result.ToList();


        return View();

Он работает большую часть времени, но каждый раз выдает исключение "Соединениеуже участвует в транзакции и не может участвовать в другой транзакции ".

Любые идеи.Я пытался решить ее разными способами, но безуспешно.Я использовал используя (область действия транзакции), используя (dbcontext.database.opentransaction).но это исключение появляется со всеми этими опциями.

...