C# .NET Core在另一个模型中使用AppUser作为属性

C# .NET Core在另一个模型中使用AppUser作为属性,c#,authentication,asp.net-core,.net-core,asp.net-core-mvc,C#,Authentication,Asp.net Core,.net Core,Asp.net Core Mvc,所以我想做的是把一个作者和一篇文章联系起来。AppUser类从IdentityUser扩展而来。我试图将每篇文章的作者设置为AppUser,但我遇到了一些问题。在数据库中,Author没有出现,而是authord,这是为什么?尽管看起来我可以通过帖子联系到AppUser,但我没有收到任何错误或警告。但我仍然无法通过帖子查看作者姓名,有人能解释一下原因吗 后期模型 public class Post { ..... ..... public AppUser Author

所以我想做的是把一个作者和一篇文章联系起来。AppUser类从IdentityUser扩展而来。我试图将每篇文章的作者设置为AppUser,但我遇到了一些问题。在数据库中,Author没有出现,而是authord,这是为什么?尽管看起来我可以通过帖子联系到AppUser,但我没有收到任何错误或警告。但我仍然无法通过帖子查看作者姓名,有人能解释一下原因吗

后期模型

public class Post
{
    .....
    .....

    public AppUser Author { get; set; }

}
AppUser

public class AppUser : IdentityUser
{
}
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(Post post)
    {

        if (ModelState.IsValid)
        {

            AppUser appUser = await userManager.GetUserAsync(HttpContext.User);
            post.Author = appUser;

            string slug = userProject.Name.ToLower().Replace(" ", "-");
            post.Slug = slug;

            context.Add(post);
            await context.SaveChangesAsync();

            return RedirectToAction("Index");
        }
        return View(post);
    }
控制器

public class AppUser : IdentityUser
{
}
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(Post post)
    {

        if (ModelState.IsValid)
        {

            AppUser appUser = await userManager.GetUserAsync(HttpContext.User);
            post.Author = appUser;

            string slug = userProject.Name.ToLower().Replace(" ", "-");
            post.Slug = slug;

            context.Add(post);
            await context.SaveChangesAsync();

            return RedirectToAction("Index");
        }
        return View(post);
    }

您应该将
AuthorId
添加到
Post
模型中

public class Post
{
    public string AuthorId { get; set; }

    [ForeignKey("AuthorId")]
    public AppUser Author { get; set; }
}
只需将
AuthorId
设置为
appUser.Id

post.AuthorId = appUser.Id;

这有助于我从视图中显示AuthorId,但我仍然无法在视图中显示用户模型中的数据。您不应显示
AuthorId
。当您使用
AuthorId
时,实体框架会自动通过
AuthorId
设置
Author
。这只是将值设置为
Author
属性的一种方法。此外,您还可以像这样使用
Include
var posts=context.posts.Include(x=>x.Author)谢谢,一旦我添加了inclde,它就可以工作了。我不太清楚为什么框架会自动将Id与用户匹配?