【发布时间】:2014-09-24 09:17:28
【问题描述】:
在 MVC 5 和 EF 6.1 中,我使用了一个简单的继承层次结构,其中 Student 类从 Person 类继承。对于这两个类,我的数据库上下文中都有一个实体集(DbSet 属性):
public class DatabaseContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Student> Students { get; set; }
}
现在,当我要求脚手架为子类 Student 生成一个控制器时,它使用 Persons 实体集,导致如下语句
Student student = db.Persons.Find(id);
编译器显然抱怨它不能将任何人转换为学生。
有没有办法确保脚手架使用正确的实体集(本例中为学生)?
请注意,删除 Persons 实体集并不是一个好的解决方案,因为还有其他控制器需要这样做。
【问题讨论】:
-
你确定你的继承码是正确的?
-
嗯,我猜继承代码是正确的,因为EF PowerTools生成的图表正确显示了继承关系。
-
另一个观察结果:当我用 Student 替换所有出现的 Persons 时,生成的 Web 界面运行正常。此外,ASP.NET 动态数据(自动构建脚手架)在相同的 EF 模型和数据库上正常工作。
标签: asp.net-mvc entity-framework asp.net-mvc-5 dbcontext entity-framework-6.1