web-dev-qa-db-ja.com

Entity Framework Database First .Net Core

.Net Standard 2.0クラスライブラリプロジェクトがあり、それにEntityFrameworkを追加したいと思います。 Entity Framework Coreパッケージをプロジェクトに追加しましたが、プロジェクトに新しいアイテムを追加しようとすると、EntityFrameworkテンプレートが表示されません。私はウェブを調べましたが、見つけられるのはコードファーストの説明だけです。

データベースの最初の機能を元に戻すにはどうすればよいですか?

6
coolblue2000

EF Coreは、デザイナーによるEDMXベースのデータベースファーストワークフローをサポートしていません。 EF Coreは、すべてのオブジェクトからデータベースへのマッピングを属性に保存し、FluentAPIマッピングをソースコードに保存します。

EF 6では、「コードファースト」という用語は2つのまったく異なる意味を持っていました。 1つは、データベースが.NETクラスから生成されたコードファーストモデリングワークフローです。 「コードファースト」のもう1つの意味は、マッピングメタデータがEDMXファイルではなくソースコード(Attributes/Fluent API)に埋め込まれていることです。 EF 6は、2つの異なるデータベースファーストワークフローをサポートしていました。 EDMXを使用したデータベースファースト、およびワークフローは正式には「既存のデータベースからのコードファースト」と呼ばれていましたが、「コードベースのマッピングを使用したデータベースファースト」と呼ばれることもありました。

EF Coreでは、コードには常にマッピングがあるため、その意味では「コードファースト」です。ただし、データベースファーストの設計ワークフローを実行し、既存のデータベースに一致するエンティティとマッピングコードを作成することはできます。

また、パッケージマネージャーコンソールのscaffold-dbcontext、またはCLIコマンドのdotnet ef dbcontext scaffoldを使用して、既存のデータベースからエンティティクラスとマッピングメタデータを生成できます。 既存のデータベースを使用したASP.NET CoreでのEFコアの使用開始 を参照してください。

「.netcore」では、メニューや「新規アイテム追加」ボタンからEFを使用することはできません。

「Microsoft.VisualStudio.Web.CodeGeneration.Design」パッケージがインストールされていることを確認してください:

  1. 後藤Tools –> NuGet Package Manager –> Package Manager Console

  2. 実行Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

次に、次の手順に従います。

  1. サンプルコードで接続文字列を作成します。(SQLSERVER、DATABASE、USERNAME、PASS)

    Data Source=SQLSERVER;Initial Catalog=DATABASE;persist security info=True;user id=USERNAME;password=PASS

  2. サンプルコードを編集し、上記のコードを引用符で囲みます。(CONECTIONSTRING、FOLDERNAME)

    Scaffold-DbContext "CONECTIONSTRING" Microsoft.EntityFrameworkCore.SqlServer -OutputDir FOLDERNAME

  3. たとえば、これはステップ1と2の結果です。

    Scaffold-DbContext "Data Source=localhost;Initial Catalog=myDb;persist security info=True;user id=sa;password=0000" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/EF

  4. 上記のコードをTools –> NuGet Package Manager –> Package Manager Console

既存のデータベースを使用したASP.NET CoreでのEFコア入門 の詳細

1
M.R.T2017