私は注入し、このようユニティを使用しています: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);
}
}
とMyTaskClassインスタンスを作成するために、container.Resolveメソッドを使用しますが、それが発生します2つのタスクがPerRequestLifetimeManagerのためにDbContextFactoryによって生成された同じdbcontextを使用するというエラーが発生しました.dbcontextの異なるインスタンスを1つ作成したい場合、IDbContextFactoryの別のlifetimemanagerを登録する必要がありますか?
おかげ
工場が常に同じインスタンスを返す場合、工場は工場ではありません –