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能够让Teachers
与Students
分开,但是他们都混杂在一个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 { }
我希望这有帮助
我认为你需要一些旗帜来区分它们(我不能真正相信你不能)。 并且可以使用TPH
inheritance方法。 在这里和这里查看更多信息。
让教师和学生在两个单独的表中inheritance自抽象基础:
上述就是C#学习教程:entity framework中的多个相同类型的集合分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
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; } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/957505.html