C# 注入数据将层类访问到业务层类

C# 注入数据将层类访问到业务层类,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我正在将所有业务逻辑代码从.NETMVC4项目中的控制器移动到业务层类。所以我需要从业务层访问数据访问层类。文件结构是这样的 控制器 private readonly ICandidateRepository _candidateRepository; private readonly IJobApplyService _jobApplyService; public CandidateController(ICandidateRepository candidateRepository, IJ

我正在将所有业务逻辑代码从.NETMVC4项目中的控制器移动到业务层类。所以我需要从业务层访问数据访问层类。文件结构是这样的

控制器

private readonly ICandidateRepository _candidateRepository;
private readonly IJobApplyService _jobApplyService;
public CandidateController(ICandidateRepository candidateRepository, IJobApplyService jobApplyService
{
  _candidateRepository = candidateRepository;
  _jobApplyService = jobApplyService;
}
  
业务层

private readonly ICandidateRepository _candidateRepository;
public JobApplyService(ICandidateRepository candidateRepository)
{
        _candidateRepository= candidateRepository;
}
数据访问类

CandidateRepository
我可以通过使用Ninject DI来实现这一点。但问题是在我的控制器中,为每个HTTP请求创建了2个候选正数据访问类实例

我怎样才能防止呢


还有其他好的方法吗?

您需要更改接口声明中的代码

private readonly ICandidateRepository _candidateRepository;
public JobApplyService(CandidateRepository candidateRepository)
{
        _candidateRepository= candidateRepository;
}
地点控制器和业务层


“CandidateRepository CandidateRepository”

如何为依赖项注入配置ICANDIDidaterepository?如果是每个请求,我认为相同的实例将在控制器和业务层之间共享。但是,我建议根本不要直接访问控制器中的存储库。由于您有业务层服务,理想情况下,这些服务将是控制器和数据层之间的中间人。@MattU ICANDIDatarepository配置为按请求使用。你能告诉我如何在控制器和业务层之间共享同一个实例吗?他们应该已经在共享一个实例了。您确实将它注入到两个不同的类中,但我相信它们最终都会为任何给定的请求引用相同的共享实例。在本例中,接受具体的实现会在
JobApplyService
CandidateResposition
之间创建耦合。而且,这个答案并不是在回答问题。这个答案是如何解决我的问题的。我不明白。