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哈哈 –