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

c# – 基本目录中的DbMigration.SqlFile差异

发布时间:2020-12-15 07:56:09 所属栏目:百科 来源:网络整理
导读:我们在EF迁移6.1.2中使用新的DbMigration.SqlFile方法在迁移中运行迁移脚本.根据 the documentation,该文件必须相对于当前的AppDomain BaseDirectory.我们已将这些文件包含在项目中,并将它们设置为复制到输出目录. 在当地这一切都运行良好.它们输出到bin目录
我们在EF迁移6.1.2中使用新的DbMigration.SqlFile方法在迁移中运行迁移脚本.根据 the documentation,该文件必须相对于当前的AppDomain BaseDirectory.我们已将这些文件包含在项目中,并将它们设置为复制到输出目录.
在当地这一切都运行良好.它们输出到bin目录,并运行正常.

然而,在将软件部署到运行IIS的服务器时,迁移失败,因为它突然期望文件相对于根.当我将它们复制到那里时,迁移工作正常.

如何使用DbMigration.SqlFile使其在本地和服务器上正确运行?

解决方法

如果给出了相对路径,则SqlFile方法使用CurrentDomain.BaseDirectory.解决方法是自己映射路径并给出方法的绝对路径.解决方案如下所示:
var sqlFile = "MigrationScripts/script1.sql";
var filePath = Path.Combine(GetBasePath(),sqlFile);
SqlFile(filePath);

public static string GetBasePath()          
{       
    if(System.Web.HttpContext.Current == null) return AppDomain.CurrentDomain.BaseDirectory; 
    else return Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"bin");
}

BasePath解决方案取自:Why AppDomain.CurrentDomain.BaseDirectory not contains “bin” in asp.net app?

(编辑:李大同)

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

    推荐文章
      热点阅读