0
我使用统一注入和这样的:Unity将PerRequestLifetimeManager注入后台任务?
container.RegisterType<IDbContextFactory, DbContextFactory>(new PerRequestLifetimeManager());
container.RegisterType<IRepository<Log>, Repository<Log>>();
//....other repositories here...
container.RegisterType<ILogService, LogService>();
//...other services here...
,我有一个任务类,如:
public class MyTaskClass
{
LogService logService;
public MyTaskClass(LogService logService)
{
this.logService = logService;
}
async void ExecuteTasks()
{
Task t1 = Task.Factory.StartNew(() =>
{
logService.Write("Test");
});
Task t2 = Task.Factory.StartNew(() =>
{
logService.Write("Test");
});
await Task.WhenAll(t1, t2);
}
}
,并使用container.Resolve方法来创建MyTaskClass实例,但是它会发生由于PerRequestLifetimeManager,两个任务使用由DbContextFactory生成的相同dbcontext的错误,如果我想通过统一创建不同的dbcontext实例,所以我必须注册不同的IDbContextFactory的lifetimemanager?
感谢
如果您的工厂总是返回相同的实例,那么它不是工厂 –