BackgroundJobs不允许您使用IRepository获得用户

用例: 我需要根据来自BackgroundJob的ARGS提取用户记录

public class ULBackgroundJob : BackgroundJob<ULJobArgsDto>,ITransientDependency,IULBackgroundJob
{
 private readonly IRepository<User,long> _userRepository;
 public ULBackgroundJob
 (IRepository<User,long> userRepository)
  {
    _userRepository = userRepository;
  }

 public  override void Execute(ULJobArgsDto args)
 {
  User user = _userRepository.FirstOrDefault(args.UserId);
 }
}

结果: 我总是得到零结果,并检查了用户ID值是否存在。

可疑问题: 生成的SQL在查询中插入“ @__ ef_filter__IsMayHaveTenantFilterEnabled_1 = 1”,因此我怀疑我从BackgroundJob运行时需要以某种方式将其设置为零。

leqihuan 回答:BackgroundJobs不允许您使用IRepository获得用户

您需要禁用IMayHaveTenant过滤器才能查看跨租户实体:

using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.MayHaveTenant))
{
    User user = _userRepository.FirstOrDefault(args.UserId);
}

您可以在ASP.NET Boilerplate文档中了解有关数据过滤器的更多信息:https://aspnetboilerplate.com/Pages/Documents/Data-Filters

本文链接:https://www.f2er.com/2931661.html

大家都在问