Abp项目中的领域模型实体类访问仓储的方法
首先声明,不推荐使用这种方法。实体访问仓储是不被推荐的!
1.简单粗暴的方法
Abp.Dependency.IocManager.Instance.Resolve<IRepository<要访问的实体类>>();
2.绕个弯子的方法
- 首先声明一个继承自IDomainService的接口并定义接口方法,例如ITestService
- 添加接口实现类,在该构造函数中声明要访问的实体仓储相关参数
public class TestService : ITestService
{
private IRepository<Role> roleRepository;
public TestService(IRepository<Role> roleRepository)
{
this.roleRepository = roleRepository;
}
public bool CheckSomething()
{
var query = roleRepository.GetAll();
...
}
}
- 在实体类方法中通过IoC获取领域服务
var svc = Abp.Dependency.IocManager.Instance.Resolve<ITestService>();
var pass = svc.CheckSomething();
Abp框架会自动为TestService实例注入相应的仓储变量,这个领域服务也可以直接在Application层中使用。