【问题标题】:AspNetUsers as foreign key in another tableAspNetUsers 作为另一个表中的外键
【发布时间】:2018-09-22 13:52:30
【问题描述】:

现在我正在建立一个迷你博客。当用户创建帖子时,我想在帖子表中插入来自 AspNetUsers 的用户 ID 作为外键 这是post模型,谁能告诉我制作它的步骤。

public class Post
{
  [Required]
  public int Id { get; set; }

  [Required]
  public string Title { get; set; }

  [Required]
  public string Content { get; set; }

  [Required]
  public string Path { get; set; }

  [Required]
  public DateTime PostDate { get; set; }

  public ApplicationUser User { get; set; }

  public IEnumerable<Comment> Comments { get; set; }
}

【问题讨论】:

  • 如果您使用 CodeFirst 或 BaseFirst,请给我们打电话?会有帮助的。
  • 你不需要。 Post 表中已经有 ApplicationUser。例如;如果您想查看特定用户的所有帖子,只需致电context.Posts.Where(p =&gt; p.User.Id == 5)
  • @Cedric 代码优先,
  • @AdamVincent 我同意你的观点,但我想在 Post 表中插入 UserId 作为外键?
  • 然后把 public ApplicationUser User { get; set; } 改为 public int ApplicationUserId { get; set; } .. 我说是因为如果你两者都有,那将是多余的。然后你需要做一些额外的 Fluent API 代码来将外键映射到 User 表。如果您保持原样,EF 会为您完成所有工作,而无需任何额外开销。

标签: entity-framework asp.net-mvc-3 authentication ef-code-first asp.net-identity


【解决方案1】:

您必须使用下面的代码来使用AspNetUsersId 作为外键。如果您不想将AspNetUsersId 设为可空,可以使用[Required]

public AspNetUsers User { get; set; }
[ForeignKey("AspNetUsersId")]
[Required]
public int AspNetUsersId { get; set; }

是的,当您在Post 表中插入记录时,您必须手动设置AspNetUsersId

假设您有Post 类的对象obj。因此,如果AspNetUsers table PK 是Id,则必须在方法中编写以下代码。

obj.AspNetUsersId = AspNetUsers.Id;

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2019-07-29
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多