AspNetUsers 作为另一个表中的外键

Posted

技术标签:

【中文标题】AspNetUsers 作为另一个表中的外键【英文标题】:AspNetUsers as foreign key in another table 【发布时间】: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 会为您完成所有工作,而无需任何额外开销。 【参考方案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;

【讨论】:

以上是关于AspNetUsers 作为另一个表中的外键的主要内容,如果未能解决你的问题,请参考以下文章

我想在另一个表中添加 AspNetUsers 表“Id”列作为外键

外键为啥必须是唯一键?为啥至少唯一键才能作为其他表的外键?不唯一为啥不可以?

关于主键和外键

mysql表中,表的外键关联自身主键,为啥插入不了数据?

sql中啥叫主键表,啥叫外键表

数据库