加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用Entity Framework Core运行迁移SQL脚本

发布时间:2020-12-15 08:32:46 所属栏目:百科 来源:网络整理
导读:我遇到了一个问题,我无法访问SQL脚本来应用迁移. 这是我的迁移代码: public partial class AddSomethingMigration : Migration{ private const string MIGRATION_SQL_SCRIPT_FILE_NAME = @"MigrationsScripts20170710123314_AddSomethingMigration.sql";
我遇到了一个问题,我无法访问SQL脚本来应用迁移.
这是我的迁移代码:
public partial class AddSomethingMigration : Migration
{
    private const string MIGRATION_SQL_SCRIPT_FILE_NAME = @"MigrationsScripts20170710123314_AddSomethingMigration.sql";

    protected override void Up(MigrationBuilder migrationBuilder)
    {
        string sql = Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).FullName,MIGRATION_SQL_SCRIPT_FILE_NAME));
        migrationBuilder.Sql(File.ReadAllText(sql));
    }
}

因此,当我在本地计算机上使用程序包管理器控制台时,一切正常.但是当我部署到环境中时,我得到了与文件的差异.

我可以自动通过EF迁移运行我的静态SQL脚本,还是应该在代码中内嵌SQL查询?

解决方法

我找到了这个问题的几个答案.

>将脚本添加为项目资源并使用它:

string sql = Resources._20170630085940_AddMigration;
    migrationBuilder.Sql(sql);

这个选项不太好,因为.sql会嵌入程序集中.

>如果您使用.csproj结构的Net Core项目,则可以将itemgroup添加到xml:

<ItemGroup> <Content Include="Migrations***.sql" CopyToPublishDirectory="PreserveNewest" /><!-- CopyToPublishDirectory = { Always,PreserveNewest,Never } --></ItemGroup>

然后指定文件的路径,如:

Path.Combine(AppContext.BaseDirectory,relativePath)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读