web-dev-qa-db-ja.com

ttクラスに新しく追加されたテーブルのcsクラスを生成しないデータベースからのエンティティフレームワーク更新モデル

Visual Studio 2012でエンティティフレームワーク5を使用しています。

既存のモデルがあります。次に、その既存のモデルに新しいテーブルを追加します。そのためにedxmファイルを開き、右クリックを使用してモデルを正常に更新しました。

これで、モデルの「EntityTypes」の下にある「Model Browser」で、テーブル名が存在することがわかります。ただし、ソリューションエクスプローラーでは、.ttファイルの下に新しく追加したテーブルの自動生成された.csファイルは表示されません。

「カスタムツールの実行」を試みましたが、クラスが生成されていません。 Visual Studioも再起動しましたが、結果は同じです。

誰も私を助けることができますか?

ありがとう

13
Dev

問題点

  1. データベースにテーブル名tblEmployeeがあるが、「エンティティデータモデル」を追加した後、EDMXファイルでエンティティtblEmployeeEmployeeに変更し、保存してビルドします。ただし、変更された名前のクラスはModel1.ttファイルで自動的に生成されません。
  2. 新しいテーブルを追加するために「データベースからモデルを更新」の場合、同じ問題が発生します。
  3. モデルクラスでビューを作成する場合/ EntityFrameworkを使用してアクションでコントローラーを作成する場合も、MVCでは使用できません

この問題は、VS2012の初期バージョン用です。この問題は、VS2012のアップグレードバージョンで解決されます。

ソリューション

vS2012およびEF 5.0の初期バージョンでこれに対する解決策があります

手順に従う

  1. [Model1.tt]を右クリックし、[カスタムツールの実行]を選択して保存し、[今すぐビルド]を選択すると、クラスが生成されます。
  2. [Model1.Context.tt]を右クリックし、[カスタムツールの実行]を選択して、[保存してビルド]を選択します。

    public DbSet<Employee> Employees { get; set; } 
    

ソリューションの保存とビルド

Model1Context context=new Model1Context();
List<Employee> empList= context.Employees.ToList();

これは私のために働いた。しかし、VS 2012のこのバージョンでは、EF 6.0は、MVCで「エンティティフレームワークを使用してコントローラーとビューを作成する」場合、まだ足場を作成できないことに注意してください。 EF 5.0を使用するか、VS2012を新しいアップデートでアップデートする必要があります。

32
Dnyneshwar

自分で解決しました。

問題はファイルfilename。Context.ttおよびfilename。ttにありました。

両方のファイルで指定された変数const string inputFileのダイアグラムファイル名は、既存のダイアグラムファイルと異なりました(。edmx file)。既存のダイアグラムファイル名で更新し、データベースからモデルを更新しました。今は正常に動作しています。

4
Dev

この場合、エキサイティングなモデルを削除し、追加をクリックして、新しく追加したテーブルを追加するだけです!

これがフォルダーにあるedmxファイルのバグである場合、現在修正されています-VS 2012 Update 1をダウンロードしてインストールします。次から入手できます。

http://www.Microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

4
Neel

新しいテーブルに主キーを追加しました。これで問題が解決します。

1
alexey