如何指定从实体X到同一目标实体Y的两个导航属性

本文关键字:实体 两个 属性 导航 目标 何指定 | 更新日期: 2023-09-27 18:06:24

假设我有一个Instructor类:

public class Instructor
{
    public InstructorTypesEnum Type { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
    public virtual ICollection<Course> CoInstructingCourses { get; set; }
}

这里,InstructorTypesEnum有两个值:instructor和co-instructor。因此,两个导航属性CoursesCoInstructingCourses应该返回这些不同的路线。

当然,我也有困难指定相应的属性在Course

    public Guid InstructorId { get; set; }
    public virtual Instructor Instructor { get; set; }
    public virtual ICollection<Instructor> Coinstructors { get; set; }

正确的做法是什么?

如何指定从实体X到同一目标实体Y的两个导航属性

您可以使用InversePropertyAttribute

在你的模型上,我认为它将是(未验证):

public class Instructor
{
  public InstructorTypesEnum Type { get; set; }
  [InverseProperty("Instructors")]
  public virtual ICollection<Course> Courses { get; set; }
  [InverseProperty("Coinstructors")]
  public virtual ICollection<Course> CoInstructingCourses { get; set; }
}

更重要的是,您不应该使用GUID作为实体ID。这会影响性能。

public Guid InstructorId { get; set; }

尝试将其替换为例如int.

相关文章: