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

BackgroundJobs do not let you get Users with 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 运行 时我需要以某种方式将该设置设置为零..?

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

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

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