C# 是否可以将sql文件用作EF数据库迁移?

C# 是否可以将sql文件用作EF数据库迁移?,c#,entity-framework,database-migration,database-project,C#,Entity Framework,Database Migration,Database Project,我正在使用EF6.0,并使用SQLServerDatabaseProject实现我的数据库。 我想使用EF迁移工具进行数据库迁移。但是,因为我的数据库在DbProject上,所以我希望所有迁移文件都是SQLFiles(而不是c#) 因此,我想知道EF是否支持此功能,如果不支持,是否可以编写一个新的迁移类来保留EF功能,但以这种方式工作 也请考虑,我不希望EF生成我的迁移,但我希望能够使用其他迁移命令,如Update数据库和…。 ==有关问题的更多详细信息== 我不想让c#类加载我的sql文件。s

我正在使用EF6.0,并使用SQLServerDatabaseProject实现我的数据库。 我想使用EF迁移工具进行数据库迁移。但是,因为我的数据库在DbProject上,所以我希望所有迁移文件都是SQLFiles(而不是c#) 因此,我想知道EF是否支持此功能,如果不支持,是否可以编写一个新的迁移类来保留EF功能,但以这种方式工作

也请考虑,我不希望EF生成我的迁移,但我希望能够使用其他迁移命令,如Update数据库和…

==有关问题的更多详细信息==

我不想让c#类加载我的sql文件。sql文件必须直接保存以进行上下迁移,并且必须像对待DbMigration类一样对待它们。 Migrations 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

只需在迁移类中使用
SqlFile
扩展方法:

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

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

尽管您可以使用
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"));
    }
}
内部密封类配置:dbmigtionconfiguration
{
受保护的覆盖无效种子(YourDbContext上下文)
{
种子(上下文);
context.Database.ExecuteSqlCommand(FileReadAllText(“migration.sql”);
}
}
如果在
Up
方法中写入迁移。当您更新数据库时,它将在每次迁移时执行,我想这不是您所期望的


您需要的是脚本按照每个
更新数据库运行。(不是每次迁移)

Thanx是答案,但我想知道是否可以使用SQL文件进行迁移,而不是c#类。Thanx是答案,但我想知道是否可以使用SQL文件进行迁移,而不是c#类