4

我正在使用实体框架和 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出现此错误:

'User' 不是指定的 'Context' 类的一部分,并且无法修改 'Context' 类以向其添加 'DbSet' 属性。(例如,“上下文”类可能在已编译的程序集中。)

我可以补充public DbSet<User> UserSet { get; set; }Context但我认为这不是正确的方法。

4

1 回答 1

3

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

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

如果您不想持久 User保存到数据库,则不能使用脚手架创建控制器。

于 2012-05-27T11:33:23.993 回答