有两个表:Teachers
和Students
这两个表都可以从基类Human
派生。
可以从DbSet<Human>
和Teacher
课程加载Student
吗?并执行一般功能,例如通用插入
伪代码:
class Student : Human
{
//
//
//
DbSet<Human> GenericLoading(...)
{
//
}
}
泛型DbSet的使用:
void Insert<T>(DbSet<T> entities, string name, int age) where T: new(),Human
{
entities.Add(new T{ Name = name, Age = age });
}
任何帮助将不胜感激。
答案 0 :(得分:2)
听起来像是在寻找Table-Per-Concrete-Type (TPC) inheritance
从同一基类Human
派生两个实体并配置每个实体类使用自己的表,然后在DbSet<Human>
DbContext
答案 1 :(得分:0)
如果要加载数据,可以使用IQueryable.Concat创建联合查询:
var teacherQuery = db.Teacher.Select(e => new Person {...})
var studentQuery = db.Student.Select(e => new Person {...})
var combinedQuery = teacherQuery.Concat(studentQuery);
如果你不知道确切的属性,我不知道你怎么能插入。