sql >> Database teknologi >  >> RDS >> Sqlserver

EF 6 - Sådan udføres parallelle forespørgsler korrekt

Problemet er dette:

EF understøtter ikke behandling af flere anmodninger gennem det samme DbContext-objekt. Hvis din anden asynkrone anmodning på den samme DbContext-instans starter før den første anmodning er færdig (og det er hele pointen), får du en fejlmeddelelse om, at din anmodning behandles mod en åben DataReader.

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

Du bliver nødt til at ændre din kode til noget som dette:

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. Problem med at bygge cx_Oracle - libclntsh.so.11.1 => ikke fundet

  2. Sådan eksporteres data til CSV-fil i Oracle ved hjælp af PL SQL-procedure

  3. DateTime2 vs DateTime i SQL Server

  4. SQLite - Kunne ikke åbne databasefilen