我正在尝试定义一对多关系,以及相同的 2 个实体“UserProfile”和“Blog”之间的一对一关系。我想我已经成功使用了以下代码,但是,它导致在“博客”表中创建一个名为“UserProfile_UserId”(FK)的新列。我不明白它为什么这样做。
英文的关系是: 1.“一个 UserProfile 有很多博客” 2.“一个 UserProfile 有一个主要的可选(可为空)博客”
所以最终我希望看到从 Blog.UserId 到 UserProfile.UserId 的 FK 以及从 UserProfile.BlogId 到 Blog.Id 的可为空的 FK 我认为这就是全部......我特别不希望 EF 添加其他列.
public class UserProfile
{
[Key]
public int UserId { get; set; }
public int? BlogId { get; set; }
public virtual Blog Blog { get; set; } // This is a user's main blog
public virtual ICollection<Blog> AllUsersBlogs { get; set; }
}
public abstract class Blog
{
[Key]
public int Id { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual UserProfile User { get; set; }
}