簡體   English   中英

從EntityFramework的`DbContext`中獲取數據庫類型

[英]Get the database type from EntityFramework's `DbContext`

問題很簡單:給定一個EntityFramework的DbContext實例,我想在它所連接的有效數據庫之間做什么。 AFAIK目前有針對SQL Server的EF提供程序的實現,由Microsoft,MySQL,Oracle和Postgres提供。

假設我在我的方法中只“訪問”了DbContext實例。 我如何檢測到我正在使用MSSQL,MySQL,Postgres等? (我想知道是否有一個用於EF的Oracle客戶端,這會加起來)

目前我可以嘗試一些反思:

  • DbContext.Connection通常是EntityConnection一個實例
  • EntityConnection公開StoreConnection屬性,該屬性應該是我們的ADO連接。 針對已知類(如MySqlConnection )進行測試應該可行

但是我相信這種方法有點棘手。 普通的App.config包含以下內容:

<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

我有點困惑,我希望EF有一個更好的API來檢測數據庫類型,以防需要執行不常見的操作。

我的問題是,是否有一個更簡單的方法。

你用過這個嗎?

DbContext.Database.Connection.GetType().Name

如果是,那么棘手的部分是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM