通用表加载EntityFramework

时间:2017-09-21 08:37:08

标签: c# entity-framework generics

有两个表:TeachersStudents这两个表都可以从基类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 });
}

任何帮助将不胜感激。

2 个答案:

答案 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);

如果你不知道确切的属性,我不知道你怎么能插入。