MVC 5带继承的脚手架使用错误的实体集

Pie*_*ica 5 asp.net-mvc entity-framework dbcontext asp.net-mvc-5 entity-framework-6.1

使用MVC 5和EF 6.1,我使用的是简单的继承层次结构,其中类继承自Person类.对于这两个类,我在我的数据库上下文中有一个实体集(DbSet属性):

public class DatabaseContext : DbContext
{
    public DbSet<Person> Persons { get; set; }
    public DbSet<Student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我要求脚手架为Student,子类生成一个控制器时,它使用Persons实体集,导致如下的语句

    Student student = db.Persons.Find(id);
Run Code Online (Sandbox Code Playgroud)

编译器显然抱怨它不能只将任何人转换为学生.

有没有办法确保脚手架使用正确的实体集(在这种情况下是学生)?

请注意,删除Persons实体集不是一个好的解决方案,因为还有其他控制器需要它.

小智 1

为什么不使用关系使 personID 作为外键而不是继承?这就是为什么你可以 db.students.find(personID) 和 db.person.find(personID)

要查找所有详细信息?额外的代码,但我想不出其他方法