我正在使用Entity Framework和MVC3,我的问题是,如果模型继承自另一个类,我就无法构建控制器。
示例:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
public class User : Person
{
public string Email { get; set; }
public string Password { get; set; }
}
public class Context : DbContext
{
public DbSet<Person> PersonSet { get; set; }
}
当我尝试使用模板User
添加控制器Controller with read/write actions and views, using Entity Framework
时出现此错误:
&#39;用户&#39;不属于指定的&#39;上下文&#39;上课和上下文&#39;无法修改类以添加&#39; DbSet&#39;财产到它。 (例如,&#39; Context&#39;类可能位于已编译的程序集中。)
我可以将public DbSet<User> UserSet { get; set; }
添加到Context
,但我不认为这是正确的方法。
答案 0 :(得分:3)
目前您的User
不是持久类型,因为上下文不知道该类型,因此您无法使用持久化实体类型的脚手架来为User
类型创建控制器。如果要将User
及其属性存储在数据库中,请将其添加到您的上下文中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>();
}
如果您不想将User
保留到数据库,则无法使用脚手架来创建控制器。