如何在依赖实体中没有导航 属性 的情况下创建一对一关系

How do i create One-to-One to relationship without having navigation property in dependent entity

我理解以下代码在主体和依赖实体之间创建 "One-to-One relationship"。

不过我想问一下:

  1. 是否可以在依赖实体中不包含导航 属性 来创建一对一关系?

  2. 如果是,我应该如何重写下面的代码?

    public class Student
    {
        [Key]
        public int Id { get; set; }
        public string FullName { get; set; }
    
        public StudentReport StudentReport { get; set; }
    }
    
    public class StudentReport
    {
        [Key, ForeignKey("Student")]
        public int Id { get; set; }
        public string RollNumber { get; set; }
        public string StudentType { get; set; }
    
        public Student Student { get; set; }
    }
    

要在从属端创建没有导航 属性 的一对一关系,您需要使用 fluent API。例如,在您的 DbContext class 中,您可以覆盖 OnModelCreating 并使用它来定义关系:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // I'm assuming the report is optional
    modelBuilder.Entity<Student>() 
        .HasOptional(t => t.StudentReport) 
        .WithRequired();
}
public class StudentReport
{ 
    public int Id { get; set; }
    public string RollNumber { get; set; }
    public string StudentType { get; set; }
}

请参阅 WithRequired() here

的文档