How to specify two navigation properties from entity X to the same target entity, Y?

落爺英雄遲暮 提交于 2019-12-02 18:11:51

问题


Consider that I have an Instructor class:

public class Instructor
{
    public InstructorTypesEnum Type { get; set; }

    public virtual ICollection<Course> Courses { get; set; }

    public virtual ICollection<Course> CoInstructingCourses { get; set; }
}

Here, InstructorTypesEnum has two values: instructor and co-instructor. So the two navigation properties Courses and CoInstructingCourses are supposed to return those different courses.

Of course I am also having difficulties specifying the coresponding properties in the Course class

    public Guid InstructorId { get; set; }

    public virtual Instructor Instructor { get; set; }

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

What is the correct way to do it?


回答1:


You can use the InversePropertyAttribute

On your model, I think it would be (not verified):

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; }
}



回答2:


What's more - you shouldn't use GUID as entity ID. It hurts performance.

public Guid InstructorId { get; set; }

Try to replace it with for example int.



来源:https://stackoverflow.com/questions/24022047/how-to-specify-two-navigation-properties-from-entity-x-to-the-same-target-entity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!