sql >> Database >  >> RDS >> Sqlserver

EF 6 - Hoe parallelle queries correct uit te voeren

Het probleem is dit:

EF biedt geen ondersteuning voor het verwerken van meerdere verzoeken via hetzelfde DbContext-object. Als uw tweede asynchrone verzoek op dezelfde DbContext-instantie begint voordat het eerste verzoek is voltooid (en dat is het hele punt), krijgt u een foutmelding dat uw verzoek wordt verwerkt tegen een open DataReader.

Bron:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

U moet uw code wijzigen in iets als dit:

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. php-datum converteren naar mysql-formaat

  2. JDBC geeft lege resultaatset terug

  3. Een overzicht van replicatie op volumeniveau voor PostgreSQL met DRBD

  4. Wat is er met (nolock) in SQL Server?