Tôi có một dự án MVC3 sử dụng Ninject, Entity Framework và mẫu Đơn vị công việc với một lớp Dịch vụ.Vấn đề phạm vi Ninject với Công việc/Chủ đề
Lớp AsyncService của tôi có chức năng bắt đầu tác vụ nền, làm ví dụ, thêm người dùng vào kho lưu trữ Người dùng. Vấn đề hiện tại của tôi là nhiệm vụ chỉ chạy một cách chính xác trong vài giây trước khi tôi nhận được lỗi mà DbContext đã được xử lý. Ngữ cảnh cơ sở dữ liệu của tôi, được tiêm với InRequestScope của Ninject() dường như bị xử lý, vì InRequestScope() liên kết nó với HttpContext.
Tôi đã đọc về InThreadScope(), tuy nhiên tôi không biết cách triển khai đúng cách trong dự án MVC của mình.
Câu hỏi của tôi là: Cách chính xác để sử dụng Ninject trong Nhiệm vụ của tôi là gì?
public class AsyncService
{
private CancellationTokenSource cancellationTokenSource;
private IUnitOfWork _uow;
public AsyncService(IUnitOfWork uow)
{
_uow = uow;
}
public void AsyncStartActivity(Activity activity)
{
...snip...
this.cancellationTokenSource = new CancellationTokenSource();
var cancellationToken = this.cancellationTokenSource.Token;
var task = Task.Factory.StartNew(() =>
{
foreach (var user in activity.UserList)
{
this._uow.UserRepository.Add(new User() {UserID = user});
}
this._uow.Save();
}, cancellationToken);
...snip...
}
}
Có một mẫu mã? Jason, nơi bạn có thể làm cho nó hoạt động? Tôi đang gặp vấn đề tương tự và theo liên kết không giúp được gì. –
Tôi có cùng một vấn đề này, tôi rất muốn xem một số mã mẫu cho kịch bản này. –