Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

EF 6 - Как правилно да изпълнявате паралелни заявки

Проблемът е следният:

EF не поддържа обработка на множество заявки през един и същ обект DbContext. Ако втората ви асинхронна заявка в същия екземпляр на DbContext започне преди първата заявка да завърши (и това е цялата работа), ще получите съобщение за грешка, че заявката ви се обработва срещу отворен DataReader.

Източник:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

Ще трябва да модифицирате кода си до нещо подобно:

async Task<List<E1Entity>> GetE1Data()
{
    using(var MyCtx = new MyCtx())
    {
         return await MyCtx.E1.Where(bla bla bla).ToListAsync();
    }
}

async Task<List<E2Entity>> GetE2Data()
{
    using(var MyCtx = new MyCtx())
    {
         return await MyCtx.E2.Where(bla bla bla).ToListAsync();
    }
}

async Task DoSomething()
{
    var t1 = GetE1Data();
    var t2 = GetE2Data();
    await Task.WhenAll(t1,t2);
    DoSomething(t1.Result, t2.Result);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Йерархичен списък на типовете тригерни събития в SQL Server 2017

  2. ATAN() Примери в SQL Server

  3. Как да вмъкнете JSON в таблица в SQL Server

  4. Как да извлечете двоично изображение от база данни с помощта на C# в ASP.NET

  5. Как да сравните datetime само с дата в SQL Server