ApplicationUser上的实体框架核心导航属性有时为空

时间:2020-03-08 19:45:29

标签: entity-framework-core

我扩展了IdentityUser,因为用户属于组织。

public class ApplicationUser : IdentityUser
{
    public int OrganisationId { get; set; }

    [ForeignKey("OrganisationId")]
    public Organisation Organisation { get; set; }
}

在剃须刀页面中,此方法有效:

Organisation = (await UserManager.GetUserAsync(User)).Organisation;

但是,在Startup.cs中,此操作无效:

UserManager<ApplicationUser> userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
ApplicationUser rwb = await userManager.FindByEmailAsync("rwb@...");
Organisation o = rwb.Organisation; // null :(

这是怎么回事?

为什么Entity Framework Core不加载导航属性?如何获取导航属性?

1 个答案:

答案 0 :(得分:0)

  1. 安装Microsoft.EntityFrameworkCore.Proxies
  2. Startup.cs中像这样执行.UseLazyLoadingProxies()
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseLazyLoadingProxies().UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));
  1. 更新所有模型类以使所有导航属性为virtual