在过去的几天里,我一直在与Entity框架Core结合使用Identity系统。在揭示我的问题之前,这里有一些信息:
我正在使用的身份系统配置为:
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Cookies.ApplicationCookie.AutomaticChallenge = false;
}) .AddUserManager<UserManager>()
.AddRoleManager<RoleManager>()
.AddUserStore<UserStore>()
.AddRoleStore<RoleStore>()
.AddEntityFrameworkStores<ApplicationDbContext, int>()
.AddDefaultTokenProviders();
现在问题本身:
我想使用身份系统来生成令牌,获取用户等但我无法在UserManager
对象本身上急切加载,因为它的方法返回Task<ApplicationUser>
和{{1方法本身需要Include()
(进行急切加载)。能够使用预先加载和IQueryable
的一般方法是什么?
答案 0 :(得分:3)
最简单的方法是直接调用UserManger.Users。像这样:
C:/project/src/
答案 1 :(得分:0)
也许你想使用预先加载和UserManager如下:
private async Task<ApplicationUser> GetSingleUser(Expression<Func<ApplicationUser, bool>>
predicate, params Expression<Func<ApplicationUser, object>>[] includeProperties)
{
IQueryable<ApplicationUser> query = _userManager.Users;
foreach (var includeProperty in includeProperties)
{
query = query.Include(includeProperty);
}
return await query.Where(predicate).FirstOrDefaultAsync();
}
希望这有帮助!