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

前端之家收集整理的这篇文章主要介绍了c# – 基本目录中的DbMigration.SqlFile差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在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?

猜你在找的C#相关文章