我在解决方案上实现了URF.Net框架,以尝试解决异步并行问题,我需要运行以下任务:
List<Task> tasks = new List<Task>();
foreach (var timesheet in tsvm)
{
tasks.Add(Task.Run(() => addts(usrts, ts, searchDateFrom, searchDateTo)));
}
Task.WhenAll(tasks);
}
private void addts(UsersTimeSheetsWeeklyViewModel urts, tsvm, DateTime searchDateFrom, DateTime searchDateTo)
{
var tsr= tsrService.getTsr(timesheet.Id, searchDateFrom, searchDateTo, null, "Date", true);
....
但是我得到了味精:
System.InvalidOperationException:“由于DbContext已被处置,因此无法完成该操作。”
我知道我只需要一个上下文并创建一个工厂即可完成这项工作,但是我已经在使用这种模式,因此我需要帮助来完成这项工作。
此框架的我的Autofac COntainer设置:
builder.RegisterType<AgendaEntities>().As<DbContext>().InstancePerLifetimeScope();
builder.RegisterType<Repository.Pattern.Ef6.UnitOfWork>().As<IUnitOfWorkAsync>().InstancePerLifetimeScope();
builder.RegisterType<Repository.Pattern.Ef6.Repository<TimeSheetRecord>>().As <IRepositoryAsync<TimeSheetRecord>>().InstancePerLifetimeScope();
builder.RegisterType<TimeSheetRecordServiceAsync>().As<ITimeSheetRecordServiceAsync>().InstancePerLifetimeScope();