我的项目由服务和存储库构成(所有存储库共享数据库上下文)。在我的一个服务层中,我有一个使用存储库写入数据库的异步方法。Web 请求将在此方法开始使用之前完成并处理上下文。我试图理解此答案中所述的NamedScopes。我似乎仍然无法理解如何实现它。我将展示我的项目的结构,并希望有人可以在代码级别帮助我。
绑定
private static void RegisterServices(IKernel kernel)
{
//dbcontext
kernel.Bind<EntityDatabaseContext>().ToMethod(context => new EntityDatabaseContext()).InRequestScope();
//unit of work
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
//repositories
kernel.Bind<IRepository<Account>>().To<Repository<Account>>().InRequestScope();
//services
kernel.Bind<IAuthenticationService>().To<AuthenticationService>().InRequestScope();
}
AuthenticationService 使用构造函数注入
public AuthenticationService(UnitOfWork unitOfWork, IRepository<Account> accountRepository){}
我的 AuthenticationService 中的一个方法
//this is a background process
public Task SomeMethodAsync(string text)
{
//spin it off into a new task
return Task.Factory.StartNew(() => SomeMethod(text));
}
SomeMethod
利用accountRepository
. 请告诉我是否需要更多信息。请帮助我解决线程问题,如果 NamedScopes 是解决方案,我该如何实现它?
基本上,正在执行一个后台进程,并且由于请求范围,它正在使用由 ninject 处理的上下文。