2012-06-30 11 views
9

EF 5RCをまず使用しています。私はこれが簡単な質問(私が願って)答えるべきであるように感じる。自動移行が何をしようとしているのかを把握する良い方法はありますか?自動移行用のSQLを取得するための戦略

Add-Migration PSコマンドで移行を追加しました。 私はUpdate-Databaseを呼び出しましたが、その移行で問題はないようです。 は今 - 私は通常行うように私はちょうど更新、データベースを実行しているんだけど、次のエラーで:

PM> update-database -Verbose 
Using StartUp project 'Web'. 
Using NuGet project 'DataAccess'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Target database is: 'UserGroup' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration). 
No pending code-based migrations. 
Applying automatic migration: 201206301526422_AutomaticMigration. 
Automatic migration was not applied because it would result in data loss. 

お知らせ、私は、-verboseオプションを追加している、と私は再びそれを試してみました - スクリプト。しかし私は私たちが何に移行しているのか分かりません。どのSQLか - それがデータ損失をもたらすと思うもの

ここでは、単に「データの損失を許可する」を有効にするのではなく、これらの移行のトラブルシューティング方法を理解しようとしています。

ありがとうございます!

答えて

18

だけで実行します。

PM> Update-Database -Script -Force 

を。これは、SQLを生成し、それを実行せずにウィンドウに表示されます。

+0

私は、データの損失を許可有効にする場合は、することができますを使用するカントすべての行が消去されますか?私は列に 'MaxLength'属性を追加しました。私はDB内の行のどれもがその長さを実際に超えていないことを知っています。これはデータ損失の意味ですか、それとも文字通りDBからすべての行を削除するのでしょうか? – Shimmy

+2

@ Shimmyあなたの行は消去されません。 –

+0

しかし、それをドロップするか、または短くすることができます –

9

私は公開後のAzure上で、このエラーを得たが、そこuが-Forceので、グローバルソリューション(とあまりにも地元の-Forceは必要ありません)

public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
    AutomaticMigrationDataLossAllowed = true; // <-- THIS LINE 
} 
+0

これを追加するには、DbMigrationsConfiguration から継承する構成クラスのコンストラクタに入ります。http://msdn.microsoft.com/en-us/library/hh829093(v=vs.103) ).aspx –

+0

ありがとう、私はAzureポスト発行問題につきました –

+1

運用環境での移行によるデータ損失を許容するのはかなり危険です。 –

関連する問題