Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

EF 6 - Cara melakukan kueri paralel dengan benar

Masalahnya adalah ini:

EF tidak mendukung pemrosesan beberapa permintaan melalui objek DbContext yang sama. Jika permintaan asinkron kedua Anda pada instance DbContext yang sama dimulai sebelum permintaan pertama selesai (dan itulah intinya), Anda akan mendapatkan pesan kesalahan bahwa permintaan Anda sedang diproses terhadap DataReader yang terbuka.

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

Anda perlu mengubah kode Anda menjadi seperti ini:

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. Bagaimana NTILE() Bekerja di SQL Server

  2. Menghapus Profil Email Database (SSMS)

  3. Kesalahan overflow aritmatika mengonversi ekspresi ke tipe data datetime. (sambil menampilkan tanggal waktu..)

  4. Bagaimana cara menambahkan Nomor Baris di SQL Server Management Studio ( SSMS) - Tutorial SQL Server / TSQL Bagian 11

  5. Apa itu Basis Data, Mengapa Basis Data?