2016-05-03 22 views
5

Trong ứng dụng ASP.NET Core của tôi, tôi có một số logic nghiệp vụ phức tạp liên quan đến nhiều luồng làm các hoạt động cơ sở dữ liệu nằm ngoài phạm vi của một yêu cầu HTTP. Việc truy cập cơ sở dữ liệu từ cùng một luồng xử lý yêu cầu là tầm thường, nhưng khi sinh ra các luồng yêu cầu DbContext của riêng chúng, điều này hóa ra là tẻ nhạt. Vì bản thân DbContext không an toàn thread, tôi đã cố tạo một DbContext mới cùng với các tùy chọn của nó ngoài việc lấy một DbContext từ một IServiceProvider. Với cả hai cách tiếp cận, tôi nhận được ngoại lệ sau:Entity Framework Core và đa luồng

Đã cố gắng sử dụng ngữ cảnh trong khi đang được định cấu hình. Không thể sử dụng một cá thể DbContext bên trong OnConfiguring vì nó là vẫn đang được định cấu hình tại thời điểm này.

Tôi nhận được ấn tượng rằng tôi đang tiếp cận vấn đề này theo cách không đúng và tôi không được phép xử lý các kết nối cơ sở dữ liệu như thế này. Làm thế nào tôi sau đó nghĩa vụ phải có được một DbContext trong một chủ đề riêng biệt từ một trong những xử lý yêu cầu gửi đến?

+2

Tạo phiên bản DbContext mới trong mỗi chuỗi bạn sử dụng. DbContext không an toàn thread. – Mangist

+0

Bạn có thể cung cấp một đoạn mã không? –

Trả lời

-1

Hóa ra mã thử nghiệm của tôi có lỗi đánh máy nhỏ khiến nó sử dụng cùng một DbContext trên tất cả các chuỗi. Tuy nhiên nó được yêu cầu rằng tôi tạo một thể hiện DbContext mới nhưng tôi không thể có được một thông qua IServiceProvider như đã đề cập trong câu hỏi của tôi.