1

MVC4 で Entity Framework 5 を使用して、Model First を使用して小さなテスト アプリを作成しています。

dataプロジェクトと、uiデータを参照するプロジェクトの 2 つのプロジェクトがあります。

次のエンティティを持つモデルMYModel.edmxがありますdata

[ITEM] [BOOK][DVD] 「book」と「dvd」には、抽象クラス「Item」の基本型があります。

コード生成を使用して、これらの 3 つのテーブルと私の dbContext のクラスを次のように作成します。

public DbSet<Item> Items {get;set;}

「本」または「DVD」にアクセスするための DbSet を作成しません。

データ コンテキストと "Books" のモデル クラスを使用して新しいコントローラーを作成しようとすると、次のエラーが発生します。

mynamespace.data.books is not part of the specified mynamespace.data.dbcontext class, and the mynamespace.data.dbcontext class could not be modified to add a dbset<mynamespace.data.books> property to it. (For example )

私は明らかに何か間違ったことをしているので、基本型とモデルでEFを最初に使用する正しい方法は何ですか?最初にモデルを使用する必要がありますか? このシナリオではコードを最初に使用し、DBContext を自分で作成する方が簡単でしょうか?

4

2 に答える 2

1

私はモデル ファーストにあまり詳しくありませんが、これをmynamespace.data名前空間に追加してみてください。

public class DVD : Item{
    //Put your DVD specific properties here
}

public class Book : Item{
     //Put your Book specific properties here
}

ここに主キーを追加しないでください。どちらも ItemId 主キーを継承します。これは、データベースでは DVD と Book の両方が Item テーブルに格納されているためです。

次に、2 つのモデルをコンテキストに追加します。

public DbSet<DVD> DVDs {get;set;}
public DbSet<Book> Books {get;set;}

コード ファーストによる Table-Per-Hierarchy の実装に関する適切なリファレンスは、ここにあります。申し訳ありませんが、モデル ファーストのリファレンスについてはわかりません。 -started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application

于 2013-08-30T16:41:18.100 に答える
0

私は同じ問題を抱えていましたが、何が原因なのかわかりません。あなたがする必要があるのは次のとおりです。

  1. プロジェクトをコンパイルする
  2. Controllers フォルダーを右クリックして、コントローラーを追加します。
  3. [データ コンテキスト クラス] の [コントローラーの追加] ダイアログ ボックスで、コンテキストを手動で入力し、[追加] をクリックします。

それが役立つことを願っています

于 2014-03-14T03:05:13.917 に答える