web-dev-qa-db-ja.com

Entity Framework 7 Database-First POCO Generatorはありますか?

私は現在作業中の新しいプロジェクトのためにEntity Framework 7とASP.NET 5で遊んでいますが、障害にぶつかりました。私が取り組んでいるチームは、開発にDBAファーストのアプローチを使用しています。つまり、データベースはDBAによって設計され、開発者はコードを変更してモデルの変更を補正します。

EF6を使用すると、EDMXデザイナーの「更新」機能を使用してコードを更新するだけなので、これはうまく機能します。ワンクリックで、新しいクラスを取得できました。ただし、EF7では、すべてが異なります。デザイナーはもういません。EFチームによるいくつかのブログ投稿によると、「データベースファースト」コード生成もサポートするはずのコードファーストを使用することになっています。

ただし、ASP.NET 5アプリケーションでVisual Studio 2015 CTP6を使用してこれを行う方法を理解することはできません。ツールのサポートはまだありますか、それとも運が悪いのですか?そして、それもまったく来ていますか?

54
Ron Penton

最新のビットでは、dnxコマンドのPromptおよびPowerShellコマンドを使用してこれを行うことができます、はい

Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer

または

dnx ef dbcontext scaffold "<connectionString>"  EntityFramework.MicrosoftSqlServer

または(EF Core RC2から)

dotnet ef dbcontext scaffold "<connectionString>"  Microsoft.EntityFrameworkCore.SqlServer

コマンドを機能させるには、Microsoft.EntityFrameworkCore.Toolsパッケージをインストールする必要があります。

56
ErikEJ

これは、NuGetパッケージマネージャーコンソールまたはコマンドプロンプトを使用して実行できます。コマンドプロンプトで試しました。コマンドプロンプトでプロジェクトフォルダーに移動した後、同様のコマンドを使用しました。

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

不足しているパッケージに関するエラーが発生しました:

EntityFramework.Commands

EntityFramework.SqlServer.Design

次に進む前に、このコマンドが続きます。

dnu restore

必要な実際のパッケージは、記載されているフレームワークproject.jsonファイルによって異なる場合があります。

コマンドプロンプトでdnxまたはその他の関連コマンドを実行できない場合は、別の回答のコメントで言及されている [〜#〜] this [〜#〜] リンクに従ってください。

P.S。:現在のコマンドリストは次のとおりです[執筆時点、最終更新日8月21日]:

ASP.NET-EntityFramework Wiki-NuGet/DNXコマンド

12
BiLaL

.NET CoreのRC2の更新されたパラメーターは次のとおりです(2016年5月)

dotnet ef dbcontext scaffold -c RRStoreContext -o Model 
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"     
Microsoft.EntityFrameworkCore.SqlServer --force

Microsoft.EntityFrameworkCore.SqlServerは、コマンドで使用する必要があるパッケージの新しい名前であることに注意してください。既存のファイルを上書きするforceパラメーターを追加しました。 「o」パラメータは出力ディレクトリ名です。そして、今ではdotnetの代わりにdnxです。

現在のリリースでは、project.jsonに必要な依存関係は

"dependencies": {
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Tools": {
      "type": "build",
      "version": "1.0.0-preview1-final"
    }
  },

注:「ビルド」のタイプは、アセンブリを参照するものは、ツールにのみ必要なため、これを依存関係としてDLLと見なしません。

9
Simon_Weaver

@ErikEJは、このための非常に便利なツールを開発しました。プロジェクトを右クリックするだけでPOCOクラスを生成し、SQLサーバーインスタンスを提供します。 here からダウンロードできます。手順は here と明記されています。

2
vivek nuna