gpt4 book ai didi

c# - ASP.NET:检查是否从迁移运行

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

我的 ConfigureServices 中有一些代码在运行迁移时失败了:

dotnet ef migrations list

我正在尝试添加证书,但它找不到文件(它在启动整个项目时有效)。那么有没有办法做这样的事情:

if (!CurrentEnvironment.IsMigration()) {
doMyStuffThatFailsInMigration()
}

这样我就可以保持我的代码原样,但只在不在迁移中运行时执行它。

谢谢

最佳答案

只需在 Main 方法中设置一个静态标志(它不会被 dotnet-ef 工具调用):

public class Program
{
public static bool IsStartedWithMain { get; private set; }

public static void Main(string[] args)
{
IsStartedWithMain = true;
...
}
}

然后在需要的时候检查:

internal static void ConfigureServices(WebHostBuilderContext context, IServiceCollection services)
{
if (Program.IsStartedWithMain)
{
// do stuff which must not be run upon using the dotnet-ef tool
}
}

编辑:在 Dotnet 6.0 中没有单独的 ConfigureServices 方法。一切都在 Main 方法中初始化(可以使用 dotnet new .. --use-program-main 创建)。在这种情况下,可以使用标志来跳过 EF 内容:

private static bool IsStartedWithMain =>
Assembly.GetEntryAssembly() == Assembly.GetExecutingAssembly();

关于c# - ASP.NET:检查是否从迁移运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042860/

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