5
問題很簡單:給定一個EntityFramework的實例DbContext
,我想告訴它所連接的有效數據庫。 AFAIK目前有用於SQL Server的EF提供程序的當前實現,Microsoft,MySQL,Oracle和Postgres。從EntityFramework的`DbContext`獲取數據庫類型
我們假設我只能訪問我方法中的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來檢測的情況下,數據庫類型,一個需要執行少見操作。
我的問題是如果有一個更簡單的方法。
該對象始終是'EntityConnection'的一個實例。棘手意味着我不喜歡使用反射。這很容易出錯。當然,沒有_easy_「GetDbType()==」MYSQL「API哈哈 –