我有一个创建 JobContext 解析器的 Ninject 设置InRequestScope()
这工作得很好,但是,我在网站上有一个非常具体的调用,需要我遍历几个数据库(数据库中的所有数据按年份)。我无法完全弄清楚发生了什么,因为我忘记了 JobContext 是,InRequestScope
但最后一段代码没有按照我的想法行事。
这是设置
//Ninject module
Bind<Data.IJobContext>().To<Data.JobContext>().InRequestScope();
//Controller's Initialize
protected override void Initialize(System.Web.Routing.RequestContext requestContext) {
base.Initialize(requestContext);
//set a connection string for the jobContext
this.jobContext = DependencyResolver.Current.GetService<IJobContext>();
jobContext.SetYear(currentYear);
}
由于 JobContext 在请求范围内,它每年都会重复使用相同的对象。这是我需要它InTransientScope
而不是InRequestScope
.
//Special function
foreach (int year in ActiveYears) {
jobContext = DependencyResolver.Current.GetService<IJobContext>();
jobContext.SetYear(year);
DoSomething();
}
我怎样才能做到这一点?