2016-09-16 21 views
0

私はAsp.Netコアプロジェクトを作成しています。プロジェクトには移行のためのファイルが付属していました。このファイルは自分のDBを生成します。しかし、私はDBにいくつかのテーブルがあり、サンプルのように移行ファイルを作成したいと思います。既存のDBからMigrationBuilderを自動生成する方法

サンプル:

migrationBuilder.CreateTable(
       name: "AspNetRoles", 
       columns: table => new 
       { 
       Id = table.Column<string>(nullable: false), 
       ConcurrencyStamp = table.Column<string>(nullable: true), 
       Name = table.Column<string>(maxLength: 256, nullable: true), 
       NormalizedName = table.Column<string>(maxLength: 256, nullable: true) 
       }, 
       constraints: table => 
       { 
        table.PrimaryKey("PK_AspNetRoles", x => x.Id); 
       }); 

私は存在しないテーブルを持っている場合。このファイルを作成するにはどうしたらいいですか?

+0

質問が不明ですか?上記の移行スクリプトを実行する必要がありますか、それとももう一度作成する必要がありますか? – Sampath

答えて

0

まず、DbFirstまたはCodeFirstへのアプローチを決める必要があります。ファイルは自動的に生成され、ファイルを手動で変更することもできます。

モデルとdbcontextを最大限に制御できるため、CodeFirstの使用をお勧めします。

ステップ1:既存のデータベースを使用してコードファーストモデルを作成します。 codefirst model using the existing database

ステップ2:今パッケージマネージャコンソールでイネーブル移行

ステップ3を入力します。あなたは(DB)コンテキストおよびデータベーステーブルから生成されたモデルを使用します。タイプのアドオン移行パッケージマネージャコンソール

手順5で[移行を識別するためのいくつかの名前]:生成された移行ファイルをチェック

は、ステップ4は、モデルに変更を加えます。

ステップ6:パッケージマネージャコンソールでタイプ更新データベース

今すぐあなたの変更がデータベースに更新されます。これからは、データベースへの変更を処理するための第1のアプローチができます。

希望すると便利です。

0

MigrationBuilderは、EntityFrameworkCoreにのみ存在します。 EntityFrameworkCoreとEntityFramwork 6.xの違いに注意してください。 EntityFrameworkCoreのドキュメントはhereです。問題を解決するチュートリアルはhereです。

  1. を実行し、このような何か:データベースからモデルをリバースエンジニアリングする

    Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

    。これにより、モデルのスナップショットと移行が生成されます(追加移行自体を実行していなければ、そうは確かではありません)。

  2. 必要に応じて、既存のモデルを自動的に生成されたモデルと結合します。
  3. 実行Add-Migration

Update-Databaseは今、あなたは、移行ファイルとあなたのモデルとデータベースが同期している取得します。

また、EntityFrameworkCoreがサポートしていないものを感じるには、Feature Comparesionをご覧ください。これまでのところ、 EntityFrameworkCoreには、EntityFramwork 6.xが持つ多くのGUIツールがありません。たとえば、他の回答に記載されているエンティティデータモデルウィザードを使用することはできません。偶然にGUIツールを使用すると、デフォルトでEntityFramwork 6.x関連のものが生成されます。したがって、cmdletをVisual Studioのパッケージマネージャコンソールに使用する必要があります。

関連する問題