Verwenden von migrate.exeUsing migrate.exe

Code First-Migrationen kann zum Aktualisieren einer Datenbank in Visual Studio verwendet werden, kann aber auch über das Befehlszeilen Tool migrate.exe ausgeführt werden.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. Auf dieser Seite erhalten Sie einen kurzen Überblick über die Verwendung von migrate.exe zum Ausführen von Migrationen für eine-Datenbank.This page will give a quick overview on how to use migrate.exe to execute migrations against a database.

Hinweis

In diesem Artikel wird davon ausgegangen, dass Sie wissen, wie Code First-Migrationen in einfachen Szenarien verwendet wird.This article assumes you know how to use Code First Migrations in basic scenarios. Andernfalls müssen Sie Code First-Migrationen lesen, bevor Sie fortfahren.If you don’t, then you’ll need to read Code First Migrations before continuing.

Kopieren migrate.exeCopy migrate.exe

Wenn Sie Entity Framework mithilfe von nuget installieren, befindet sich migrate.exe im Ordner Tools des heruntergeladenen Pakets.When you install Entity Framework using NuGet migrate.exe will be inside the tools folder of the downloaded package. In < Projektordner > \ Paketen \ EntityFramework. < Versions > \ ToolsIn <project folder>\packages\EntityFramework.<version>\tools

Wenn Sie migrate.exe haben, müssen Sie Sie an den Speicherort der Assembly kopieren, die ihre Migrationen enthält.Once you have migrate.exe then you need to copy it to the location of the assembly that contains your migrations.

Wenn Ihre Anwendung auf .NET 4 und nicht auf 4,5 abzielt, müssen Sie die Redirect.config in den Speicherort kopieren und migrate.exe.configumbenennen. Dies bewirkt, dass migrate.exe die richtigen Bindungs Umleitungen abruft, um die Entity Framework Assembly suchen zu können.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
.NET 4,5-Dateien .NET 4,0-Dateien

Hinweis

migrate.exe unterstützt keine x64-Assemblys.migrate.exe doesn't support x64 assemblies.

Nachdem Sie die migrate.exe in den richtigen Ordner verschoben haben, sollten Sie Sie verwenden können, um Migrationen für die Datenbank auszuführen.Once you have moved migrate.exe to the correct folder then you should be able to use it to execute migrations against the database. Das gesamte Hilfsprogramm ist für das Ausführen von Migrationen konzipiert.All the utility is designed to do is execute migrations. Es können keine Migrationen generiert oder ein SQL-Skript erstellt werden.It cannot generate migrations or create a SQL script.

Siehe OptionenSee options

Migrate.exe /?

Im obigen Beispiel wird die Hilfeseite angezeigt, die mit diesem Hilfsprogramm verknüpft ist. Beachten Sie, dass sich die EntityFramework.dll an demselben Speicherort befinden muss, den Sie migrate.exe ausführen, damit dies funktioniert.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.

Migrieren zur neuesten MigrationMigrate to the latest migration

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

Wenn Sie migrate.exe ausführen, ist die Assembly der einzige erforderliche Parameter, bei dem es sich um die Assembly handelt, die die Migrationen enthält, die Sie ausführen möchten. allerdings werden alle auf der Konvention basierenden Einstellungen verwendet, wenn Sie die Konfigurationsdatei nicht angeben.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.

Migrieren zu einer bestimmten MigrationMigrate to a specific migration

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

Wenn Sie Migrationen bis zu einer bestimmten Migration ausführen möchten, können Sie den Namen der Migration angeben.If you want to run migrations up to a specific migration, then you can specify the name of the migration. Dadurch werden alle vorherigen Migrationen nach Bedarf ausgeführt, bis die Migration durchgeführt wird.This will run all previous migrations as required until getting to the migration specified.

Arbeitsverzeichnis angebenSpecify working directory

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

Wenn die Assembly über Abhängigkeiten verfügt oder Dateien relativ zum Arbeitsverzeichnis liest, müssen Sie startupdirectory festlegen.If you assembly has dependencies or reads files relative to the working directory then you will need to set startupDirectory.

Zu verwendende Migrations Konfiguration angebenSpecify migration configuration to use

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

Wenn Sie über mehrere Migrations Konfigurations Klassen verfügen, die von dbmigrationconfiguration erben, müssen Sie angeben, welche für diese Ausführung verwendet werden soll.If you have multiple migration configuration classes, classes inheriting from DbMigrationConfiguration, then you need to specify which is to be used for this execution. Diese Angabe wird angegeben, indem der optionale zweite Parameter ohne einen Switch wie oben angegeben wird.This is specified by providing the optional second parameter without a switch as above.

Verbindungs Zeichenfolge angebenProvide connection string

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

Wenn Sie in der Befehlszeile eine Verbindungs Zeichenfolge angeben möchten, müssen Sie auch den Anbieter Namen angeben.If you wish to specify a connection string at the command line then you must also provide the provider name. Wenn Sie den Anbieter Namen nicht angeben, wird eine Ausnahme ausgelöst.Not specifying the provider name will cause an exception.

Häufige ProblemeCommon Problems

FehlermeldungError Message LösungSolution
Unbehandelte Ausnahme: System. IO. FileLoadException: die Datei oder Assembly "EntityFramework, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" oder eine ihrer Abhängigkeiten konnte nicht geladen werden.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. Die Manifest-Definition der lokalisierte Assembly stimmt nicht mit dem Assemblyverweis.The located assembly's manifest definition does not match the assembly reference. (Ausnahme von HRESULT: 0x80131040)(Exception from HRESULT: 0x80131040) Dies bedeutet in der Regel, dass Sie eine .NET 4-Anwendung ohne die Redirect.config-Datei ausführen.This typically means that you are running a .NET 4 application without the Redirect.config file. Sie müssen die Redirect.config an denselben Speicherort wie migrate.exe kopieren und in migrate.exe.config umbenennen.You need to copy the Redirect.config to the same location as migrate.exe and rename it to migrate.exe.config.
Unbehandelte Ausnahme: System. IO. FileLoadException: die Datei oder Assembly "EntityFramework, Version = 4.4.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" oder eine ihrer Abhängigkeiten konnte nicht geladen werden.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. Die Manifest-Definition der lokalisierte Assembly stimmt nicht mit dem Assemblyverweis.The located assembly's manifest definition does not match the assembly reference. (Ausnahme von HRESULT: 0x80131040)(Exception from HRESULT: 0x80131040) Diese Ausnahme bedeutet, dass Sie eine .NET 4,5-Anwendung ausführen, bei der der Redirect.config in den migrate.exe Speicherort kopiert wurde.This exception means that you are running a .NET 4.5 application with the Redirect.config copied to the migrate.exe location. Wenn Ihre APP .NET 4,5 ist, muss die Konfigurationsdatei nicht mit den Umleitungen innerhalb von vorhanden sein.If your app is .NET 4.5 then you do not need to have the config file with the redirects inside. Löschen Sie die migrate.exe.config Datei.Delete the migrate.exe.config file.
Fehler: die Datenbank kann nicht so aktualisiert werden, dass Sie dem aktuellen Modell entspricht, weil ausstehende Änderungen vorhanden sind und die automatische Migration deaktiviert ist.ERROR: Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Schreiben Sie entweder die ausstehenden Modelländerungen in eine Code basierte Migration, oder aktivieren Sie die automatische Migration.Either write the pending model changes to a code-based migration or enable automatic migration. Legen Sie dbmigrationsconfiguration. automaticmigrationsenabled auf "true" fest, um die automatische Migration zu aktivieren.Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration. Dieser Fehler tritt auf, wenn eine Migration ausgeführt wird, wenn Sie keine Migration erstellt haben, um Änderungen am Modell zu bewältigen, und die Datenbank nicht mit dem Modell identisch ist.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. Wenn Sie einer Modell Klasse eine Eigenschaft hinzufügen und dann migrate.exe ausführen, ohne eine Migration zum Aktualisieren der Datenbank zu erstellen, ist ein Beispiel dafür.Adding a property to a model class then running migrate.exe without creating a migration to upgrade the database is an example of this.
Fehler: der Typ ist für den Member "System. Data. Entity. Migrationen. Design. toolingfacade + updaterunner, EntityFramework, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" nicht aufgelöst.ERROR: Type is not resolved for member 'System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Dieser Fehler kann durch die Angabe eines falschen Start Verzeichnisses verursacht werden.This error can be caused by specifying an incorrect startup directory. Dabei muss es sich um den Speicherort der migrate.exeThis must be the location of migrate.exe
Unbehandelte Ausnahme: System. NullReferenceException: der Objekt Verweis ist nicht auf eine Instanz eines Objekts festgelegt.Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   bei System. Data. Entity. Migrationen. Console. Program. Main (String [] args)at System.Data.Entity.Migrations.Console.Program.Main(String[] args)
Dies kann dadurch verursacht werden, dass kein erforderlicher Parameter für ein von Ihnen verwentigtes Szenario angegeben wird.This can be caused by not specifying a required parameter for a scenario that you are using. Beispielsweise wird eine Verbindungs Zeichenfolge ohne Angabe des Anbieter namens angegeben.For example specifying a connection string without specifying the provider name.
Fehler: in der Assembly "ClassLibrary1" wurde mehr als ein Migrations Konfigurationstyp gefunden.ERROR: More than one migrations configuration type was found in the assembly 'ClassLibrary1'. Geben Sie den Namen des zu verwendenden an.Specify the name of the one to use. Da der Fehlerstatus ist, gibt es in der angegebenen Assembly mehr als eine Konfigurations Klasse.As the error states, there is more than one configuration class in the given assembly. Sie müssen den/configurationType-Schalter verwenden, um anzugeben, welche verwendet werden soll.You must use the /configurationType switch to specify which to use.
Fehler: die Datei oder Assembly " < AssemblyName > " oder eine ihrer Abhängigkeiten konnte nicht geladen werden.ERROR: Could not load file or assembly ‘<assemblyName>’ or one of its dependencies. Der angegebene Assemblyname oder die angegebene Codebasis war ungültig.The given assembly name or codebase was invalid. (Ausnahme von HRESULT: 0x80131047)(Exception from HRESULT: 0x80131047) Dies kann dadurch verursacht werden, dass ein AssemblyName falsch angegeben oder nicht vorhanden ist.This can be caused by specifying an assembly name incorrectly or not having
Fehler: die Datei oder Assembly " < AssemblyName > " oder eine ihrer Abhängigkeiten konnte nicht geladen werden.ERROR: Could not load file or assembly ‘<assemblyName>' or one of its dependencies. Es wurde versucht, ein Programm mit einem falschen Format zu laden.An attempt was made to load a program with an incorrect format. Dies geschieht, wenn Sie versuchen, migrate.exe für eine x64-Anwendung auszuführen.This happens if you are trying to run migrate.exe against an x64 application. EF 5,0 und niedriger ist nur auf x86 funktionsfähig.EF 5.0 and below will only work on x86.