sql >> Databasteknik >  >> RDS >> Sqlserver

EF 6 - Hur man korrekt utför parallella frågor

Problemet är detta:

EF stöder inte behandling av flera förfrågningar via samma DbContext-objekt. Om din andra asynkrona begäran på samma DbContext-instans startar innan den första begäran avslutas (och det är hela poängen), får du ett felmeddelande om att din begäran behandlas mot en öppen DataReader.

Källa:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

Du måste ändra din kod till något sånt här:

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. Hur man tar bort "X Rows Selected" i SQLcl &SQL*Plus (Oracle)

  2. Hur man infogar data direkt från Excel till Oracle Database

  3. Hur ställer jag programmatiskt in anslutningssträngen för Entity-Framework Code-First?

  4. Finns det en funktion i Oracle som beräknar skillnaden mellan två datum?