2012-06-30 13 views
9

Używamy EF 5RC, najpierw kodu z migracjami. Czuję, że powinno to być łatwe pytanie (mam nadzieję). Czy istnieje dobry sposób, aby dowiedzieć się, co próbuje przeprowadzić migracja automatyczna.Strategia uzyskiwania SQL dla automatycznych migracji

Dodałem migrację za pomocą polecenia PS z Add-Migration. Wywołałem aktualizację bazy danych i wszystko wygląda dobrze z tą migracją. Teraz - Jestem po prostu działa Update Database jak zwykle zrobić, ale z powodu następującego błędu:

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. 

wypowiedzenia, Dodaję opcję -verbose, a próbowałem go ponownie z - Scenariusz. Ale nie mam pojęcia, do czego migrujemy; i co SQL - lub co myśli spowoduje utratę danych.

Nie chcę po prostu włączać tutaj opcji "zezwalaj na utratę danych", ale próbuję zrozumieć, jak rozwiązać te migracje.

Z góry dziękuję!

Odpowiedz

18

Wystarczy uruchomić:

PM> Update-Database -Script -Force 

To wygeneruje SQL i wyświetlić go w oknie bez uruchamiania go.

+0

Gdybym umożliwiają pozwalając utraty danych, można czy usuwa wszystkie moje wiersze? Dodałem atrybut 'MaxLength' do kolumny, Wiem, że żaden z wierszy w DB faktycznie nie przekracza tej długości, jeśli nie mam nic przeciwko obcięciu. Więc to jest to, co oznacza utrata danych, lub będzie dosłownie usunąć wszystkie wiersze z DB? – Shimmy

+2

@Shimmy nie usunie twoich wierszy. –

+0

Ale może upuścić lub skrócić kolumny –

9

mam ten błąd na Azure po publikować, ale u cant używać -force, więc globalne rozwiązanie (i nie ma potrzeby -force na miejscowy zbyt)

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

tylko po to, aby dodać to idzie do twojego konstruktora klasy konfiguracji, który dziedziczy po DbMigrationsConfiguration http://msdn.microsoft.com/en-us/library/hh829093(v=vs.103) .aspx –

+0

Dzięki, utknąłem z problemem publikowania postów Azure. –

+1

Bardzo niebezpieczne, aby umożliwić utratę danych przez migrację w środowisku produkcyjnym. –

Powiązane problemy