C# 无法将查询转换为EF Core
我正在使用asp.net样板文件,并尝试通过bool标志和权限筛选用户 下面是方法代码C# 无法将查询转换为EF Core,c#,asp.net,asp.net-core,aspnetboilerplate,C#,Asp.net,Asp.net Core,Aspnetboilerplate,我正在使用asp.net样板文件,并尝试通过bool标志和权限筛选用户 下面是方法代码 private async Task<List<User>> GetAdminUsers() { using (UnitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant)) { var adm
private async Task<List<User>> GetAdminUsers()
{
using (UnitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
{
var adminUsers = await _userManager.Users.Where(x => x.IsFuelAdmin && _permissionChecker
.IsGranted(new UserIdentifier(null, x.Id),
FuelAdministratorPermissions.Pages_Administration_Missing_PreQual_LoanAmount_Email_Notifications))
.ToListAsync();
return adminUsers;
}
}
但由于这个错误,它失败了
ionHandling.ABPEExceptionFilter:LINQ表达式“DbSet”
.其中u=>uuu ef_filter_uup_0||!ISoftDeleteu.IsDeleted&uuuuuuu ef_ufilter\uuuuu p_124;u 1 | iMAYHAVETENTATU.TENTATID==uuuuuuu ef_ufilter\uuuuuu currentTeNTATID\u2
.Whereu=>u.IsFuelAdmin
。其中u=>\uuuuu许可证检查器\u 0
用户:新用户标识符
无效的
u、 身份证
,
permissionName:无法翻译Pages.Administration.QualificationChecks.LoanAmount\u电子邮件\u通知。以可以翻译的形式重写查询,或者通过插入对AsEnumerable、AsAsAsAsyncEnumerable、ToList或ToListSync的调用显式切换到客户端计算
如何解决此问题?您可以定义其他属性(例如IsAdmin),并在查询之前在运行时进行设置。数据库服务器上没有isgrated函数。您无法将isgrated用作db函数 如果要使用本地C isgrated,请将adminUsers放入C本地列表并进行筛选,然后为isgrated:
var adminUsers = await _userManager.Users.Where(x => x.IsFuelAdmin).ToListAsync();
对于完整的SQL查询,您必须通过以下方式与用户建立连接查询:
userRoleRepository,userPermissionRepository,rolePermissionRepository
查看接受答案:
错误很明显。无法将LINQ查询转换为SQL。没有办法将本地函数调用转换为SQL