簡體   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