繁体   English   中英

有什么方法可以检测何时从 Package 管理器控制台调用 DbContext.OnConfiguring()?

[英]Any way to detect when DbContext.OnConfiguring() is being called from Package Manager Console?

有什么方法可以知道是否从 Package 管理器调用DbContext.OnConfiguring()

这是我的方法。

protected override void OnConfiguring(DbContextOptionsBuilder options)
{
    if (string.IsNullOrWhiteSpace(DataPath))
        throw new InvalidOperationException("No database path is specified.");

    // Configure SQLite
    options.UseSqlite($"Data Source={DataPath}");
}

此代码在我的 WinForms 应用程序中运行良好。 但是,当通过 Package 管理控制台添加迁移时, DataPath将为 null 并引发异常。

从 Package 管理器控制台运行时,如果DataPath是 null 也没关系,因为在这种情况下没有使用实际数据库。 但是,如果在我的应用程序运行时DataPath是 null,我仍然想抛出一个异常。

有什么方法可以检测何时从我的应用程序调用此代码,何时从 Package 管理器控制台调用它?

请注意,我使用的是 .NET 6 和 EF 6。

您可以获得执行OnConfiguring时正在运行的 exe 的名称

using System.IO;
using System.Reflection;

var exeName = Path.GetFileName(Assembly.GetEntryAssembly().Location);
Console.Log("Running with " + exeName);

返回作为默认应用程序域中的进程可执行文件的程序集,或由 ExecuteAssembly(String) 执行的第一个可执行文件。 从非托管代码调用时可以返回 null。

有关详细信息,请参阅https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getentryassembly

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM