实体框架中的多个相同类型的集合

Too*_*eey 9 c# 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<Person> Teachers { get; set; }
    public ICollection<Person> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望EF保持Teachers分离,Students但是他们都混杂在一张Person桌子里,无法区分它们.

有任何想法吗?

Kar*_*elG 8

有两种方法可以做到;

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

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Group Group { get; set; }
    public bool IsFaculty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要么

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; }
}
Run Code Online (Sandbox Code Playgroud)

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

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<Course> Courses { get; set; }
    // other teacher related fields
}
Run Code Online (Sandbox Code Playgroud)

那你Group就是

public class Group
{
    public int Id {get;set;}
    public ICollection<Teacher> Teachers { get; set; }
    public ICollection<Student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)