[英]A provider can be configured by overriding the 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.