如何指定从实体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。因此,两个导航属性Courses
和CoInstructingCourses
应该返回这些不同的路线。
当然,我也有困难指定相应的属性在Course
类
public Guid InstructorId { get; set; }
public virtual Instructor Instructor { get; set; }
public virtual ICollection<Instructor> Coinstructors { get; set; }
正确的做法是什么?
您可以使用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.