Abp项目中的领域模型实体类访问仓储的方法

时间:2023-03-09 08:10:20
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层中使用。