Csharp/C#教程:entity framework中的多个相同类型的集合分享


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自抽象基础:

上述就是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

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐