使用带有Identity for Core的EFCore

Chr*_*sto 7 .net entity-framework asp.net-identity asp.net-core

在过去的几天里,我一直在与Entity框架Core结合使用Identity系统.在揭示我的问题之前,这里有一些信息:

  1. 实体框架Core不支持延迟加载,这意味着我通过说明要包含的项目来使用预先加载
  2. 为了说明我想要检索的对象的哪些项,我覆盖每个存储库中的方法(检索到的属性现在是常量)
  3. 我正在使用的身份系统配置为:

    services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
    {
        options.Cookies.ApplicationCookie.AutomaticChallenge = false;
    })  .AddUserManager<UserManager>()
        .AddRoleManager<RoleManager>()
        .AddUserStore<UserStore>()
        .AddRoleStore<RoleStore>()
        .AddEntityFrameworkStores<ApplicationDbContext, int>()
        .AddDefaultTokenProviders();
    
    Run Code Online (Sandbox Code Playgroud)

现在问题本身:

我想使用身份系统来生成令牌,获取用户等但我无法对UserManager对象本身进行急切加载,因为它的方法返回Task<ApplicationUser>并且Include()方法本身需要IQueryable(进行急切加载).能够使用预先加载的一般方法是UserManager什么?

VHa*_*Hao 3

最简单的方法可能是直接调用 UserManger.Users 。像这样:

ApplicationUser user = await userManager.Users.Include(s => s.Sales).Where(e => e.Email == "t@t.net").FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)