C# ApplicationUser始终为空ASP.NET CORE 3.0标识

C# ApplicationUser始终为空ASP.NET CORE 3.0标识,c#,asp.net-core,entity-framework-core,asp.net-identity,C#,Asp.net Core,Entity Framework Core,Asp.net Identity,当我试图在表AspNetUsers中获取我的用户från时,即使表中有用户,用户也总是返回null public class ApplicationUser : IdentityUser { public int Rating { get; set; } public string ProfileImageUrl { get; set; } public DateTime MemberSince { get; set; } public bool IsActive

当我试图在表AspNetUsers中获取我的用户från时,即使表中有用户,用户也总是返回null

public class ApplicationUser : IdentityUser
{
    public int Rating { get; set; }
    public string ProfileImageUrl { get; set; }
    public DateTime MemberSince { get; set; }
    public bool IsActive { get; set; }
}
我想展示的是带有作者信息的帖子

public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public DateTime Created { get; set; }

    public virtual Foorum Forum { get; set; }
    public virtual IEnumerable<PostReply> PostReplies { get; set; }
    public virtual ApplicationUser User { get; set; }
}
我的DbContext是这样的:

    public class ForumDbContext : IdentityDbContext<IdentityUser>
{
    public ForumDbContext(DbContextOptions<ForumDbContext> options)
        : base(options)
    {
    }

    public DbSet<Foorum> Forums { get; set; }
    public DbSet<Post> Posts { get; set; }
    public DbSet<PostReply> PostReplies { get; set; }
}
公共类ForumDbContext:IdentityDbContext
{
public ForumDbContext(DbContextOptions选项)
:基本(选项)
{
}
公共DbSet论坛{get;set;}
公共DbSet Posts{get;set;}
公共数据库集PostReplies{get;set;}
}
Startup.cs

        public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ForumDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

        services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ForumDbContext>();
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“DefaultConnection”);
services.AddDefaultIdentity(options=>options.SignIn.RequireConfirmedAccount=true)
.AddEntityFrameworkStores();
}
我还添加了app.UseAuthentication();app.UseAuthorization();在Configure方法中


我在这里遗漏了什么,为什么我不能从数据库中获取用户?

更新

Startup.cs
ForumDbContext.cs
文件中将
IdentityUser
更改为
ApplicationUser
,可能会有所帮助。



正如我在本文中提到的,您应该添加一个属性
UserId
,并将其设置为所需的
UserId
,例如
\u currentUser.Id
。实体框架将自动将
User
包含到您的模型中。

这就是我获取帖子的方式,这里的用户和用户始终为空:请检查数据库,确保具有该Id的论坛有一个帖子,其中有一个用户与该帖子关联?如何映射帖子和用户之间的关系?我是有类似的问题。我发现你的代码有一个错误,那就是你有行services.AddDefaultIdentity(选项…这应该是services.AddDefaultIdentity(选项…)我不会将其作为解决方案发布,因为我没有一个yetVoting要关闭,因为“需要详细信息或清晰性”因为上面评论中要求的澄清是必要的。错误。
UserId
不是导航属性,EF core永远不会自动包含
User
。而且,在OP回答评论中向他们提出的一些问题之前,回答是没有用的。@GertArnold,问题很清楚,问题在
帖子中odel。他应该将
UserId
属性添加到
Post
类中,并在创建新帖子时对其进行设置。清除方法?它甚至不显示帖子是如何保存的,因此无法确定数据库记录是否具有正确的外键值。但不管清除与否,您的答案都是错误的。他使用了
ApplicationUser
键入
Post
类。但是在
Startup.cs
中,他使用了
IdentityUser
。请参见?除了模糊性和模糊性之外,什么都没有。
        public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ForumDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

        services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ForumDbContext>();
}