Von dieser Seite: Database initializer and Migrations Seed methods:
Die Seed
Methode auf der Configuration
Klasse läuft Immer wenn der Update-Database
PowerShell Befehl ausgeführt wird. Wenn der Migrationsinitialisierer nicht verwendet wird, wird die Migrationsmethode Seed
nicht ausgeführt, wenn Ihre Anwendung startet.
Also, ich glaube, Sie haben nicht viele Optionen hier, die Migration Seed
Methode wird immer dann aufgerufen, wenn Sie Update-Database
Befehl ausführen. Ich habe gegraben, wenn ein Parameter zu diesem Befehl vorhanden ist, der Sie die Methode Seed
nicht ausführen lassen, aber ich bin fraid es existiert noch nicht. Dies sind alle Parameter, die Sie verwenden können (können Sie weitere Informationen in diesem link finden):
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force]
[-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>]
[-ConnectionStringName <String>] [-AppDomainBaseDirectory <String>] [<CommonParameters>]
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force]
[-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>]
-ConnectionString <String> -ConnectionProviderName <String>
[-AppDomainBaseDirectory <String>] [<CommonParameters>]
Wenn Sie die Ausführung eines SQL-Skript zum Einfügen von Daten in der Seed
Methode, könnten Sie eine booleam Bedingung verwenden reinsert zu vermeiden die gleichen Felder nach dem ersten Mal.
Als aditional Info, Ihre Anfrage in eine Parameter die Seed
Methode ausführen zu vermeiden, wenn Sie den Befehl ausführen Update-Database
existieren bereits in diesem site, die von EF-Team verwendet wird Vorschläge aus der Community zu sammeln.
Verwenden Sie die Erweiterungsmethode "AddOrUpdate"? – octavioccl
Nein, ich benutze nicht 'AddOrUpdate' für alle Seed-Einfügungen, daneben gibt es rohe slq-Skripte. –
http://StackOverflow.com/a/20245687/150342 – Colin