Я вызываю этот метод:
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).но это исключение появляется со всеми этими опциями.