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 => 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”列作为外键