无法添加从其他类继承的模型的控制器

时间:2012-05-26 21:01:38

标签: asp.net-mvc-3 entity-framework inheritance

我正在使用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,但我不认为这是正确的方法。

1 个答案:

答案 0 :(得分:3)

目前您的User不是持久类型,因为上下文不知道该类型,因此您无法使用持久化实体类型的脚手架来为User类型创建控制器。如果要将User及其属性存储在数据库中,请将其添加到您的上下文中:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>();
}

如果您不想将User保留到数据库,则无法使用脚手架来创建控制器。