gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:27:20 26 4
gpt4 key购买 nike

我们在 EF Migrations 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# - 基本目录中的 DbMigration.SqlFile 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com