在 Entity Framework 中从 SQL 服务器告知 MySQL
Telling MySQL from SQL Server in Entity Framework
我知道这个问题看起来很奇怪,因为 EF 负责 LINQ 到 SQL 的翻译,但我正在维护一个 queries are hardcoded and encrypted in the database itself 的应用程序(由证明其正确性的律师编写) .
基本上我可以使用 DbContext.Database.Connection
对象触发 SQL 文本,但这些查询是以与方言无关的格式编写的。因此,代码根据绑定到配置变量
的 if
案例执行令牌替换
if (Configuration.DbType == DbType.MYSQL)
query = ReplaceForMySQL(query);
if (Configuration.DbType == DbType.SQLSERVER)
query = ReplaceForSqlServer(query);
我可以保留代码原样,或者 从 Web.config
.
中删除 DbType
参数的
DB 使用 EF 连接字符串绑定。我如何知道当前正在使用什么 DBMS?例如,在 NHibernate 中,我可以从 ISessionFactory
或 Configuration
测试方言
最短路线是
context.Database.Connection.GetType().Name
其中 context
是一个 DbContext
实例。这为您提供了 EF 使用的 DbConnection
的实际类型,您可以从中轻松判断正在使用的提供程序。
(如果这是正确的,请与您的律师进行认证ツ)
我知道这个问题看起来很奇怪,因为 EF 负责 LINQ 到 SQL 的翻译,但我正在维护一个 queries are hardcoded and encrypted in the database itself 的应用程序(由证明其正确性的律师编写) .
基本上我可以使用 DbContext.Database.Connection
对象触发 SQL 文本,但这些查询是以与方言无关的格式编写的。因此,代码根据绑定到配置变量
if
案例执行令牌替换
if (Configuration.DbType == DbType.MYSQL)
query = ReplaceForMySQL(query);
if (Configuration.DbType == DbType.SQLSERVER)
query = ReplaceForSqlServer(query);
我可以保留代码原样,或者 从 Web.config
.
DbType
参数的
DB 使用 EF 连接字符串绑定。我如何知道当前正在使用什么 DBMS?例如,在 NHibernate 中,我可以从 ISessionFactory
或 Configuration
最短路线是
context.Database.Connection.GetType().Name
其中 context
是一个 DbContext
实例。这为您提供了 EF 使用的 DbConnection
的实际类型,您可以从中轻松判断正在使用的提供程序。
(如果这是正确的,请与您的律师进行认证ツ)