entity framework中的多个相同类型的集合

我有这两个非常简单的类。

public class Person { public int Id { get; set; } public string Name { get; set; } public Group Group { get; set; } } public class Group { public int Id {get;set;} public ICollection Teachers { get; set; } public ICollection Students { get; set; } } 

我希望EF能够让TeachersStudents分开,但是他们都混杂在一个Person表中,无法区分他们。

有任何想法吗?

有两种方法可以做到;

第一 :在Person对象中使用标记或枚举

 public class Person { public int Id { get; set; } public string Name { get; set; } public Group Group { get; set; } public bool IsFaculty { get; set; } } 

要么

 public enum PersonType { Teacher, Student }; public class Person { public int Id { get; set; } public string Name { get; set; } public Group Group { get; set; } public PersonType PropPersonType { get; set; } } 

第二种 :以inheritance为导向的工作对象。 这种方法有我的偏好,因为如果你想扩展它,它很容易管理和扩展。

 public class Person { public int Id { get; set; } public string Name { get; set; } public Group Group { get; set; } } public class Student : Person { public int Year { get; set; } // other student related fiels. } public class Teacher : Person { public List Courses { get; set; } // other teacher related fields } 

那么你的Group就是

 public class Group { public int Id {get;set;} public ICollection Teachers { get; set; } public ICollection Students { get; set; } } 

分成两个不同的类,然后用Personinheritance它们,因为所有的老师和学生都是人,但不是所有的人都是老师和学生。

 public class Person { } public class Teacher : Person { } public class Student : Person { } 

我希望这有帮助

我认为你需要一些旗帜来区分它们(我不能真正相信你不能)。 并且可以使用TPHinheritance方法。 在这里和这里查看更多信息。

教师学生在两个单独的表中inheritance自抽象基础:

 public abstract class Person { public int Id { get; set; } public string Name { get; set; } public Group Group { get; set; } } public class Student : Person { public int Year { get; set; } // other student related fiels. } public class Teacher : Person { public List Courses { get; set; } // other teacher related fields } public class Group { public int Id {get;set;} public ICollection Teachers { get; set; } public ICollection Students { get; set; } }