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
用例: 我需要根据来自 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