2015-10-06 14 views
5

Ich verwende EF6.0 und implementiere meine Datenbank mit SQLServerDatabaseProject. Ich möchte die EF-Migrationstools für die Datenbankmigration verwenden. aber da ich meine Datenbank auf DbProject habe, möchte ich, dass alle meine Migrationsdateien SQLFiles (nicht C#) sind. Also würde ich gerne wissen, ob EF diese Funktion unterstützt und wenn nicht, ist es möglich, eine neue Migrationsklasse zu schreiben, die die EF behält Funktionen, funktioniert aber so?ist es möglich, SQL-Dateien als EF Datenbank Migrationen zu verwenden?

Bitte beachten Sie auch der Meinung, dass ich EF meine Migrationen nicht wollen, zu generieren, aber ich möchte in der Lage sein, die noch andere Migrationsbefehle wie update-Datenbank und ...

== WEITERE DETAILS ÜBER FRAGE ==

Ich möchte nicht C# Klassen meine SQL-Dateien laden. Die SQL-Dateien müssen für Up- und Down-Migrationen direkt gespeichert und genau so behandelt werden, als wären sie die DbMigration-Klassen. Ein einfaches Beispiel für Migrations dir würde wie folgt sein:

Migrations 
    -> up 
     -> 201510060807125_alter-course-change-family.sql 
     -> 201510060813136_alter-course-add-mark-column.sql 
    -> down 
     -> 201510060807125_alter-course-change-family.sql 
     -> 201510060813136_alter-course-add-mark-column.sql 

Antwort

5

einfach in der Migration Klasse Verwendung SqlFile Erweiterungsmethode:

public partial class MyFancyMigration : DbMigration 
{ 
    public override void Up() 
    { 
     SqlFile("myUpSQLFile.sql"); 
    } 

    public override void Down() 
    { 
     SqlFile("myDownSQLFile.sql"); 
    } 
} 
+0

Danke für die Antwort, aber ich möchte wissen, ob es möglich ist, SQL-Dateien für Migrationen anstelle von C# -Klassen zu verwenden. –

-1

Obwohl Sie SqlFile Methode verwenden können, empfehle ich Ihnen, dies zu schreiben auf Seed Methode Ihrer Configuration.cs Datei in Ihrem Migrationsordner.

internal sealed class Configuration : DbMigrationConfiguration<YourDbContext> 
{ 
    protected override void Seed(YourDbContext context) 
    { 
     base.Seed(context); 
     context.Database.ExecuteSqlCommand(FileReadAllText("migration.sql")); 
    } 
} 

Wenn Sie Migrationen in Up Methode schreiben. Es wird bei jeder Migration ausgeführt, wenn Sie die Datenbank aktualisieren, was Sie meiner Meinung nach nicht erwarten.

Was Sie wollen, ist, dass Ihre Skripte pro Update-Database laufen. (Nicht pro Migration)

+0

Danke für die Antwort, aber ich möchte wissen, ob es möglich ist, SQL-Dateien für Migrationen anstelle von C# -Klassen zu verwenden –