sql >> Databáze >  >> RDS >> Sqlserver

EF 6 - Jak správně provádět paralelní dotazy

Problém je tento:

EF nepodporuje zpracování více požadavků prostřednictvím stejného objektu DbContext. Pokud váš druhý asynchronní požadavek na stejné instanci DbContext začne před dokončením prvního požadavku (a to je celý bod), zobrazí se chybová zpráva, že se váš požadavek zpracovává proti otevřenému DataReaderu.

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

Budete muset upravit svůj kód na něco takového:

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. Jak vytvořit nového uživatele a udělit oprávnění v MySQL

  2. Databázové modelování

  3. Jak Stuff a 'For Xml Path' fungují v SQL Server?

  4. Jak připojit Python k serveru SQL pro automatizaci backendového procesu