将数据访问层类注入业务层类

问题描述

我正在将所有业务逻辑代码从.net MVC4项目中的控制器移至业务层类。因此,我需要从业务层访问数据访问层类。文件结构是这样的。

控制器

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请求创建了CandidateRepository数据访问类的2个实例。

如何预防?

还有其他好的方法吗?

解决方法

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

private readonly ICandidateRepository _candidateRepository;
public JobApplyService(CandidateRepository candidateRepository)
{
        _candidateRepository= candidateRepository;
}

位置控制器和业务层

“候选人候选库候选人”