【发布时间】:2015-06-02 08:53:08
【问题描述】:
所以我正在尝试使用实体框架(代码优先)对以下内容进行建模。
public class School
{
public string Name { get; set; }
public IEnumerable<Class> Classes { get; set; }
}
public class Class
{
public string Name { get; set; }
public TypeOfClass Type { get; set; }
public IEnumerable<Student> Students { get; set; }
}
public enum TypeOfClass
{
Kindergarten,
HighSchool
}
public class Student
{
public string Name { get; set; }
}
public class Kid : Student
{
public string FavouriteToy { get; set; }
}
public class Teenager : Student
{
public int AmountOfAcne { get; set; }
}
我想知道我应该如何为我的实体(和表)建模,以便我可以做这样的事情来选择School 中的所有Students:
var school = new School();
var kindergartenClass = new Class
{
Name = "Kindergarten",
Type = TypeOfClass.Kindergarten,
Students = new List<Kid>()
};
var highschoolClass = new Class
{
Name = "Kindergarten",
Type = TypeOfClass.HighSchool,
Students = new List<Teenager>()
};
school.Classes = new List<Class> {kindergartenClass, highschoolClass};
IEnumerable<Student> students = school.Classes.SelectMany(x => x.Students);
我不想为 Kids 和 Teenagers 设置单独的表,因为它们具有不同的属性,并且只会共享公共属性的子集。
谁有好的建议? :)
【问题讨论】:
标签: c# sql entity-framework database-design