web-dev-qa-db-ja.com

Entity Framework 7 DbContext scaffold

ASP.NET 5とEntity Framework 7を使用して、既存のデータベース構造のDbContextを生成しようとしています。当然のことながら、これを簡単に行う方法に関するドキュメントは多くありません。さらに、コンテキストのみを足場にしたいと思います。約900のテーブルがあり、そのうちのいくつかだけを気にします。それぞれのモデルクラスは必要ありません。

指定されたコマンド here および here を少しの運で使用しています。

だから、私は2つの質問があると思います:

  1. 生成されたコンテキストファイルはどこにありますか?コマンドプロンプトで失敗せずにコマンドを実行しましたが、他には何も起こりません。サポートされていないプロパティを持つ古いEF6モデルを追加できるので、少なくとも適切な場所にいることはわかっています。サポートされていないというエラーが表示されます。

  2. 対応するモデルクラスのないコンテキストのみを生成することは可能ですか?

12
awh112

コンテキストとモデルを生成するプロジェクトでも同じ問題がありました。これが私がしたいくつかのことです。

以下の1.0 RC1の更新

Project.json

  "dependencies": {
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
  },

  "commands": {
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  }

DNXコマンド

dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer

以下の元の投稿

これらがproject.jsonファイルに追加されていることを確認してください:

"dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer.Design": "7.0.0-beta7"
},
"commands": {
    "ef": "EntityFramework.Commands"
}

dnvm update-selfdnvm upgradeを使用して、dnvmとdnxランタイムをアップグレードします。これをcmdで実行しました。

プロジェクトの場所でcmd.exeを開きました(Windowsを使用している場合は、フォルダーに移動し、Shiftキーを押しながらフォルダーを右クリックして、[ここにコマンドウィンドウを開く]をクリックします)。私の場合、データアクセスレイヤー用に別のプロジェクトがありました。

C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\

次に、simplayを実行しました。

dnx ef dbcontext scaffold "Data Source = .; Initial Catalog = database; Integrated Security = True" EntityFramework.SqlServer

プロジェクトがビルドできることを確認してください。エラーがある場合、コマンドはおそらく機能しません。

すべてのモデルとコンテキストを生成しました(各エンティティのOnModelCreating()設定を使用)。すべてのモデルが必要ない場合は、使用していないモデルを削除してください。

だからあなたの質問に答えるために:

  1. Dnx ef dbcontext scaffoldを実行したフォルダーにモデルとコンテキストを作成します。
  2. これを可能にするコマンドはまだありません。 cmdでdnx ef --helpを実行して自分を探します。 dnx ef

これがお役に立てば幸いです。

12
Nick De Beer

Scaffoldコマンドには、オプション--table(-t)が存在します。

dnx ef dbcontext scaffold connectionstring provider -t dbo.tab1 -t dbo.tab2
3
Kirsten

EF 7の場合、baseを使用して初期化する必要がなくなり、実際にはコンパイラエラーが発生します。 Microsoft EF7開始ドキュメント

新しいことに注目したい

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2013 | Use the LocalDb 11 instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2012 | Use the SQL Express instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
    }
0
Phillip Morton