4

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エラーが発生します。

「User」は指定された「Context」クラスの一部ではなく、「Context」クラスを変更して「DbSet」プロパティを追加することはできませんでした。(たとえば、「Context」クラスはコンパイルされたアセンブリ内にある可能性があります。)

追加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 に答える