2016-12-08 13 views
0

私は、階層化されたプロジェクト構造でEntity Frameworkコードの最初のアプローチでデータベースを作成しようとしています。私はstandartのコードファーストコンソールコマンドを使用します。Entity Frameworkを使用したN層アプリケーションでのデータベースの移行CodeFirst

  • 有効-移行 => OK
  • アドオン移行初期 =>問題:それはちょうどアップや方法ダウンがあり、移行コードを生成しません
  • 更新、データベース =>何もしません。変更はありません

どのように私は層状構造で、この移行を実行することができますか?移行の変更はどのように追跡されますか?

あなたは、単にgithubの上で私のコードを確認することができますgithubの上のコードでhttps://github.com/srht/layeredIdentity

を。以前はinitの移行を作成しましたが、データベースを削除した後も、そのような初期移行コードは作成されませんでした。

答えて

0

...ちょうどアップや方法ダウンがある...

移行がどのように動作するかで、あなたがUpdate-Databaseを行うときに、暗黙的なソースの移行が常にあるとEFが適用されるので、移行をターゲットこれらの2つのソースとターゲット間の移行の増分方法(データベースをダウングレードする場合はDownメソッド)。 EFは、移行のたびに適用されるSQLコードを生成します。表示する場合はUpdate-Database-scriptパラメータで実行します。このようにして、変更は実行されず、生成されたSQLをチェックすることができます。

はどのように追跡され、移行の変化がありますか?

__MigrationsHistoryという名前のテーブルがあります。 Update-Database EFを実行すると、そのテーブルに適用される各移行のレコードが挿入されます。次回、モデルクラスのコードを変更するときは、Add-Migration YourNewMigrationNameを実行して新しい増分マイグレーションを生成する必要があります。 Add-Migrationを実行すると、前回のマイグレーション以降のモデルの増分変更が検出され、それらの変更だけを含む新しいマイグレーションが生成されます。マイグレーションファイル名にはタイムスタンプが含まれており、時間内に並べ替えることができます。

あなたがUpdate-Databaseを実行し、何もデータベースが最新のものであるので、それはある起こらない場合、保留中のすべての移行が適用されています。コンソールには、「明示的なマイグレーションを適用しない」などのメッセージが表示されます。まだ保留中の移行やエラーメッセージが残っているというメッセージが表示された場合は、何か問題が発生します。

Hereあなたは移行がどのように機能するかについてのMSDNからより多くの情報を持っています。

+0

レイヤードソリューションの違いは何ですか?移行を実行するための追加のものはありますか? standartの移行コマンドは移行コードを作成しないため、上下の方法が空白になります。あなたが言及したように、私はデータベース内の移行テーブルを追跡してやり直さないように削除しました。しかし、移行コードは生成されませんでした。 –

関連する問題