Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

EF 6 - Cách thực hiện chính xác các truy vấn song song

Vấn đề là đây:

EF không hỗ trợ xử lý nhiều yêu cầu thông qua cùng một đối tượng DbContext. Nếu yêu cầu không đồng bộ thứ hai của bạn trên cùng một cá thể DbContext bắt đầu trước khi yêu cầu đầu tiên kết thúc (và đó là toàn bộ điểm), bạn sẽ nhận được thông báo lỗi rằng yêu cầu của bạn đang xử lý đối với DataReader đang mở.

Nguồn:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

Bạn sẽ cần sửa đổi mã của mình thành một cái gì đó như sau:

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. Tạo tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)

  2. Quản lý giao dịch đồng thời bằng cách sử dụng khóa trong SQL Server

  3. 4 Chức năng để định dạng một số thành 2 vị trí thập phân trong SQL Server

  4. Cách lấy danh sách các Bảng không có Ràng buộc khóa chính trong tất cả Cơ sở dữ liệu của Phiên bản SQL Server - Hướng dẫn SQL Server / TSQL Phần 62

  5. Cách cài đặt SSMS