Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中从SQL Server告诉MySQL_C#_Mysql_Sql Server_Entity Framework - Fatal编程技术网

C# 在实体框架中从SQL Server告诉MySQL

C# 在实体框架中从SQL Server告诉MySQL,c#,mysql,sql-server,entity-framework,C#,Mysql,Sql Server,Entity Framework,我理解这个问题看起来很奇怪,因为EF负责LINQ到SQL的翻译,但我正在维护一个应用程序,在这个应用程序中,由一位律师编写并证明其正确性 基本上,我可以使用DbContext.Database.Connection对象触发SQL文本,但是这些查询是以方言无关的格式编写的。因此,代码基于绑定到配置变量的if case执行令牌替换 if (Configuration.DbType == DbType.MYSQL) query = ReplaceForMySQL(query); if (Con

我理解这个问题看起来很奇怪,因为EF负责LINQ到SQL的翻译,但我正在维护一个应用程序,在这个应用程序中,由一位律师编写并证明其正确性

基本上,我可以使用DbContext.Database.Connection对象触发SQL文本,但是这些查询是以方言无关的格式编写的。因此,代码基于绑定到配置变量的if case执行令牌替换

if (Configuration.DbType == DbType.MYSQL)
    query = ReplaceForMySQL(query);
if (Configuration.DbType == DbType.SQLSERVER)
    query = ReplaceForSqlServer(query);
我可以让代码保持原样,也可以从Web.config中去掉DbType参数


使用EF连接字符串绑定DB。我怎样才能知道目前使用的是什么DBMS?例如,在NHibernate中,我可以从ISessionFactory或配置测试方言,最短的方法是

context.Database.Connection.GetType().Name
其中context是DbContext实例。这将为您提供EF使用的DbConnection的实际类型,您可以从中轻松地判断哪个提供程序正在使用


如果这是正确的,请让你的律师证明ツ

看在律师的份上,我要建立一个自动测试套件来比较旧版本和新版本的测试结果。你不需要律师来做这件事。一点常识就足够了。