C# ApplicationUser始终为空ASP.NET CORE 3.0标识
当我试图在表AspNetUsers中获取我的用户från时,即使表中有用户,用户也总是返回nullC# 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
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>();
}