2015-10-06 86 views
5

我正在使用EF6.0並執行我的db與SQLServerDatabaseProject。 我想使用EF遷移工具進行數據庫遷移。但因爲我有我的數據庫DbProject我希望我所有的遷移文件是SQLFiles(而不是c#) 所以我想知道如果EF支持此功能,如果不是,是否有可能編寫一個新的Migration類,使EF功能,但以這種方式工作?是否可以使用sql文件作爲EF數據庫遷移?

也請考慮,我不想EF生成我的遷移作業,但我希望能夠使用其他遷移命令,如更新數據庫,並...

==更多詳細描述有關問題==

我不想讓c#類加載我的sql文件。必須直接保存sql文件以進行上下遷移,並將其視爲與DbMigration類完全相同。 的遷移DIR一個簡單的例子是這樣的:

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 

回答

5

只需在移民類使用SqlFile擴展方法:

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

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

Thanx的答案,但我想知道是否有可能使用SQL文件遷移,而不是c#類。 –

-1

雖然可以使用SqlFile方法,我建議你寫這在您的遷移文件夾中的Configuration.cs文件的Seed方法。

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

如果你在Up方法編寫遷移。當您更新數據庫時,它將在每次遷移時執行,我認爲您不期望。

你想要的是你的腳本每運行Update-Database。 (不是每個遷移在它)

+0

Thanx的答案,但我想知道是否有可能使用SQL文件進行遷移,而不是C#類 –

相關問題