gpt4 book ai didi

c# - 从 EntityFramework 的 `DbContext` 获取数据库类型

转载 作者:太空狗 更新时间:2023-10-29 23:38:06 24 4
gpt4 key购买 nike

问题很简单:给定一个 EntityFramework 的 DbContext 实例,我想告诉它所连接的有效数据库之间做了什么。据我所知,Microsoft、MySQL、Oracle 以及可能针对 Postgres 的 SQL Server 的 EF 提供程序的当前实现。

假设我“只能”访问我的方法中的 DbContext 实例。如何检测我正在使用 MSSQL、MySQL、Postgres 等? (我想知道是否有适用于 EF 的 Oracle 客户端,这会加起来)

目前我可以尝试一些反射(reflection):

  • 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

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

关于c# - 从 EntityFramework 的 `DbContext` 获取数据库类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com