2015-10-06 26 views
5

Używam EF6.0 i wdrażam mój db z SQLServerDatabaseProject. Chcę użyć narzędzi EF migracji do migracji bazy danych. ale ponieważ mam moją bazę danych na DbProject chcę, aby wszystkie moje pliki migracji były plikami SQL (nie C#) Więc chciałbym wiedzieć, czy EF obsługuje tę funkcję, a jeśli nie, czy jest możliwe napisanie nowej klasy migracji, która zachowuje EF funkcje, ale działa w ten sposób?czy można używać plików sql jako migracji bazy danych EF?

Należy również wziąć pod uwagę, że nie chcę, aby wygenerować moje EF migracje, ale chciałbym, aby móc korzystać z innych komend migracji, takich jak update-bazy i ...

== Więcej szczegółów na temat PYTANIE ==

Nie chcę, aby klasy C# ładowały moje pliki sql. Pliki sql muszą być zapisywane bezpośrednio po migracji w górę iw dół i traktowane tak, jakby były klasami DbMigration. Prostym przykładem migracji reż byłoby coś takiego:

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 

Odpowiedz

5

Wystarczy w korzystaniu klasa migracji metodą SqlFile rozszerzenia:

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

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

Niż za odpowiedź, ale chcę wiedzieć, czy możliwe jest używanie plików SQL do migracji zamiast klas C#. –

-1

Chociaż można użyć SqlFile metody, proponuję napisać to na Seed metodę swojego pliku Configuration.cs w folderze migracji.

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

Jeśli piszesz migracje w Up metody. Będzie wykonywany dla każdej migracji po aktualizacji bazy danych, której, jak myślę, nie oczekujesz.

To, czego potrzebujesz, to że twoje skrypty działają na każdy Update-Database. (Nie dla każdej migracji w nim)

+0

Niż za odpowiedź, ale chcę wiedzieć, czy można używać plików SQL do migracji zamiast klas C# –