Za pomocą migrate.exeUsing migrate.exe

Migracje Code First pozwala zaktualizować bazę danych z wewnątrz programu visual studio, ale mogą być również wykonywane za pośrednictwem migrate.exe narzędzia wiersza polecenia.Code First Migrations can be used to update a database from inside visual studio, but can also be executed via the command line tool migrate.exe. Ta strona będzie zapewniają szybki przegląd dotyczące sposobu używania migrate.exe do wykonania migracji w bazie danych.This page will give a quick overview on how to use migrate.exe to execute migrations against a database.

Uwaga

W tym artykule przyjęto założenie, że wiesz, jak użyć migracje Code First w podstawowych scenariuszy.This article assumes you know how to use Code First Migrations in basic scenarios. Jeśli tego nie zrobisz, a następnie należy odczytać migracje Code First przed kontynuowaniem.If you don’t, then you’ll need to read Code First Migrations before continuing.

Skopiuj migrate.exeCopy migrate.exe

Po zainstalowaniu programu Entity Framework za pomocą narzędzia NuGet migrate.exe będzie znajdować się w folderze narzędzia pobranego pakietu.When you install Entity Framework using NuGet migrate.exe will be inside the tools folder of the downloaded package. W <folderu projektu>\pakietów\platformy EntityFramework.< Wersja>\narzędziaIn <project folder>\packages\EntityFramework.<version>\tools

Po utworzeniu migrate.exe musisz skopiować go do lokalizacji zestawu, który zawiera migracji.Once you have migrate.exe then you need to copy it to the location of the assembly that contains your migrations.

Jeśli aplikacja jest przeznaczony dla .NET 4, a nie 4.5, należy skopiować Redirect.config w lokalizacji jako dobrze i zmień jego nazwę migrate.exe.config. Jest to więc migrate.exe pobiera przekierowania powiązań poprawna, aby można było zlokalizować zestawu platformy Entity Framework.If your application targets .NET 4, and not 4.5, then you will need to copy the Redirect.config into the location as well and rename it migrate.exe.config. This is so that migrate.exe gets the correct binding redirects to be able to locate the Entity Framework assembly.

.NET 4.5.NET 4.5 .NET 4.0.NET 4.0
Pliki .NET 4.5 Pliki .NET 4.0

Uwaga

migrate.exe nie obsługuje x64 zestawów.migrate.exe doesn't support x64 assemblies.

Po migrate.exe zostały przeniesione do poprawnego folderu powinno być można używać go do wykonania migracji w bazie danych.Once you have moved migrate.exe to the correct folder then you should be able to use it to execute migrations against the database. Jest wszystko, czego narzędzie zaprojektowano w celu wykonania migracji.All the utility is designed to do is execute migrations. Nie można wygenerować migracje ani utworzyć skrypt SQL.It cannot generate migrations or create a SQL script.

Zobacz OpcjeSee options

Migrate.exe /?

Powyższe spowoduje wyświetlenie strony pomocy skojarzony z tym narzędziu, należy pamiętać, że musisz mieć EntityFramework.dll w tej samej lokalizacji, migrate.exe uruchomionych w kolejności, aby to działało.The above will display the help page associated with this utility, note that you will need to have the EntityFramework.dll in the same location that you are running migrate.exe in order for this to work.

Migracja do najnowszych migracjiMigrate to the latest migration

Migrate.exe MyMvcApplication.dll /startupConfigurationFile=”..\\web.config”

Podczas uruchamiania migrate.exe tylko obowiązkowy parametr jest zestawu, który jest zestaw, który zawiera migracji, które próbujesz uruchomić, lecz będzie używać konwencji wszystkie na podstawie ustawienia, jeśli nie określisz pliku konfiguracji.When running migrate.exe the only mandatory parameter is the assembly, which is the assembly that contains the migrations that you are trying to run, but it will use all convention based settings if you do not specify the configuration file.

Migrowanie do dotyczące migracjiMigrate to a specific migration

Migrate.exe MyApp.exe /startupConfigurationFile=”MyApp.exe.config” /targetMigration=”AddTitle”

Jeśli chcesz uruchomić migracje maksymalnie dotyczące migracji, można określić nazwę migracji.If you want to run migrations up to a specific migration, then you can specify the name of the migration. Spowoduje to uruchomienie wszystkich poprzednich migracji zgodnie z wymaganiami aż do migracji, określić.This will run all previous migrations as required until getting to the migration specified.

Określ katalog roboczySpecify working directory

Migrate.exe MyApp.exe /startupConfigurationFile=”MyApp.exe.config” /startupDirectory=”c:\\MyApp”

Jeśli użytkownik zestawu ma zależności lub odczytuje pliki względem katalogu roboczego należy ustawić startupDirectory.If you assembly has dependencies or reads files relative to the working directory then you will need to set startupDirectory.

Określ konfigurację migracji w celu użyciaSpecify migration configuration to use

Migrate.exe MyAssembly CustomConfig /startupConfigurationFile=”..\\web.config”

Jeśli masz wiele klas konfiguracji migracji, klas dziedziczących DbMigrationConfiguration, należy określić, który ma być używany dla wykonania.If you have multiple migration configuration classes, classes inheriting from DbMigrationConfiguration, then you need to specify which is to be used for this execution. To jest określona, zapewniając opcjonalny drugi parametr bez przełącznika jako powyżej.This is specified by providing the optional second parameter without a switch as above.

Podaj parametry połączeniaProvide connection string

Migrate.exe BlogDemo.dll /connectionString=”Data Source=localhost;Initial Catalog=BlogDemo;Integrated Security=SSPI” /connectionProviderName=”System.Data.SqlClient”

Jeśli chcesz określić parametry połączenia, w wierszu polecenia, należy również podać nazwę dostawcy.If you wish to specify a connection string at the command line then you must also provide the provider name. Nazwa dostawcy nie został podany spowoduje, że wyjątek.Not specifying the provider name will cause an exception.

Typowe problemyCommon Problems

Komunikat o błędzieError Message RozwiązanieSolution
Nieobsługiwany wyjątek: System.IO.FileLoadException: nie można załadować pliku lub zestawu "platformy EntityFramework, wersja = 5.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" lub jednej z jego zależności.Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Definicja manifestu zestawu znajduje się niezgodna odwołanie do zestawu.The located assembly's manifest definition does not match the assembly reference. (Wyjątek od HRESULT: 0x80131040)(Exception from HRESULT: 0x80131040) Zwykle oznacza to, czy używasz aplikacji .NET 4, bez pliku Redirect.config.This typically means that you are running a .NET 4 application without the Redirect.config file. Należy skopiować Redirect.config do tej samej lokalizacji co migrate.exe i zmień jego nazwę na migrate.exe.config.You need to copy the Redirect.config to the same location as migrate.exe and rename it to migrate.exe.config.
Nieobsługiwany wyjątek: System.IO.FileLoadException: nie można załadować pliku lub zestawu "platformy EntityFramework, wersja = 4.4.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" lub jednej z jego zależności.Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Definicja manifestu zestawu znajduje się niezgodna odwołanie do zestawu.The located assembly's manifest definition does not match the assembly reference. (Wyjątek od HRESULT: 0x80131040)(Exception from HRESULT: 0x80131040) Ten wyjątek oznacza, że działają .NET 4.5 aplikacji przy użyciu Redirect.config skopiowane do lokalizacji migrate.exe.This exception means that you are running a .NET 4.5 application with the Redirect.config copied to the migrate.exe location. Jeśli Twoja aplikacja jest .NET 4.5 nie trzeba mieć plik konfiguracji z przekierowywaniem wewnątrz.If your app is .NET 4.5 then you do not need to have the config file with the redirects inside. Usuń plik migrate.exe.config.Delete the migrate.exe.config file.
Błąd: Nie można zaktualizować bazy danych do dopasowania w bieżącym modelu, ponieważ istnieją oczekujące zmiany, a następnie automatycznej migracji jest wyłączona.ERROR: Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Zapisać zmiany oczekujące modelu migracji za pomocą kodu lub umożliwić automatyczną migrację.Either write the pending model changes to a code-based migration or enable automatic migration. Ustaw DbMigrationsConfiguration.AutomaticMigrationsEnabled na wartość PRAWDA, aby włączyć automatyczną migrację.Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration. Ten błąd występuje podczas uruchamiania migracji nie utworzono migracji, aby poradzić sobie ze zmianami wprowadzonymi w modelu, gdy baza danych nie jest zgodny z modelem.This error occurs if running migrate when you haven’t created a migration to cope with changes made to the model, and the database does not match the model. Dodawanie właściwości do klasy modelu, ponownie uruchomić migrate.exe bez tworzenia migracji, aby uaktualnić bazę danych jest przykładem.Adding a property to a model class then running migrate.exe without creating a migration to upgrade the database is an example of this.
Błąd: Typ nie zostanie rozwiązany dla elementu członkowskiego "System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089".ERROR: Type is not resolved for member 'System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Ten błąd może być spowodowany przez określenie katalogu startup niepoprawne.This error can be caused by specifying an incorrect startup directory. Musi to być lokalizacja migrate.exeThis must be the location of migrate.exe
Nieobsługiwany wyjątek: System.NullReferenceException: odwołanie nie ustawione na wystąpienie obiektu do obiektu.Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
w System.Data.Entity.Migrations.Console.Program.Main (String [] args)at System.Data.Entity.Migrations.Console.Program.Main(String[] args)
Może to być spowodowane nie został podany wymagany parametr dla scenariusza, którego używasz.This can be caused by not specifying a required parameter for a scenario that you are using. Na przykład określenie parametrów połączenia bez określenia nazwy dostawcy.For example specifying a connection string without specifying the provider name.
Błąd: znaleziono więcej niż jeden typ konfiguracji migracji w zestawie "ClassLibrary1".ERROR: More than one migrations configuration type was found in the assembly 'ClassLibrary1'. Określ nazwę, aby korzystać.Specify the name of the one to use. Jak opisu błędu wynika, ma więcej niż jedną klasę konfiguracji w danym zestawie.As the error states, there is more than one configuration class in the given assembly. Należy użyć przełącznika /configurationType, aby określić, której mają zostać użyte.You must use the /configurationType switch to specify which to use.
Błąd: Nie można załadować pliku lub zestawu '<assemblyName>"lub jednej z jego zależności.ERROR: Could not load file or assembly ‘<assemblyName>’ or one of its dependencies. Dany zestaw nazwy lub codebase był nieprawidłowy.The given assembly name or codebase was invalid. (Wyjątek od HRESULT: 0x80131047)(Exception from HRESULT: 0x80131047) Może to być spowodowane przez niepoprawnie określający nazwę zestawu, lub nie maThis can be caused by specifying an assembly name incorrectly or not having
Błąd: Nie można załadować pliku lub zestawu '<assemblyName>"lub jednej z jego zależności.ERROR: Could not load file or assembly ‘<assemblyName>' or one of its dependencies. Próbowano załadować program w niepoprawnym formacie.An attempt was made to load a program with an incorrect format. Dzieje się tak, jeśli chcesz uruchamiać migrate.exe x64 aplikacji.This happens if you are trying to run migrate.exe against an x64 application. EF 5.0 i poniżej spowoduje działają tylko na x86.EF 5.0 and below will only work on x86.