![](/img/trans.png)
[英]How do you use Moles to mole DbContext from querying the database in EntityFramework 4.1?
[英]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.