使用EF Core在運行時確定正在使用哪個db提供程序

asp.net asp.net-core c# entity-framework entity-framework-core

在我們的ASP.NET Core和EF Core系統中,我們為系統的不同部分使用不同的數據庫。我需要能夠在運行時告訴使用哪個數據庫提供程序,因為有些東西需要考慮到這一點。

在啟動期間,SQL Server有這樣的:

  services.AddDbContext<MyContext>(
    options => options.UseSqlServer(config.GetConnectionString("DefaultConnection"))
  );

或者這對於SQLite:

  services.AddDbContext<MyContext>(
    options => options.UseSqlite(config.GetConnectionString("DefaultConnection"))
  );

關鍵是正在使用哪個數據庫的知識,包含在系統內的某個地方。

在系統的某個任意點,我如何確定我正在使用哪個數據庫?我可以訪問MyContext 。那裡有什麼可以揭示這些信息嗎?

一般承認的答案

在系統中可以訪問MyContext ,執行以下操作:

context.Database.GetDbConnection().GetType().Name

例如,它是SQLite的SqliteConnection ,或SQL Server的SqlServerConnection等。

但是我不確定你之後是否需要處理連接!


熱門答案

我在我的項目2中使用數據庫提供程序。

  • Npgsql.EntityFrameworkCore.PostgreSQL
  • Microsoft.EntityFrameworkCore.SqlServer

包含在您的客戶端項目中,可以從Nuget包管理器添加引用。

引用包含以下擴展方法。

Boolean isPostgreSQL = context.Database.IsNpgsql();
Boolean isSqlServer = context.Database.IsSqlServer();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow