您完全可以控制您在GetFactory
中输入的参数。
在配置文件中输入映射到<DbProviderFactories>
的设置,它是machine.config和web.config的组合集合。
在我的machine.config我:
<system.data>
<DbProviderFactories>
<add invariant="System.Data.SqlServerCe.3.5" name="Microsoft SQL Server Compact Data Provider" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<add invariant="System.Data.SqlServerCe.4.0" name="Microsoft SQL Server Compact Data Provider 4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<add invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
但是这取决于如果您已经安装其他数据库提供商您might also find
<add invariant="IBM.Data.DB2.iSeries" name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
这些条目不限于machine.config中。您也可以将它们添加到您的web.config。您只需确保invariant
名称的值是唯一的(跨web.config和machine.config)。或者,如果machine.config中的某个工厂没有按照您的要求执行操作,那么您可以使用clear
工厂。
在那些在在配置上面也有(这是不变的名称)被默认加载4内置的提供商
- System.Data.Odbc
- System.Data.OleDb
- System.Data.OracleClient的
- System.Data.SqlClient的
所以,如果你问用什么厂名,要看是什么ÿ你已经安装,但如果你正在寻找Sql Server客户端System.Data.SqlClient
应该工作。
如果你想它真的混淆了你的同龄人(也可能是你自己),你可以添加到您的web.config这(对于.NET 4.0的应用程序):
<system.data>
<DbProviderFactories>
<!-- remove everything predefined -->
<clear />
<!-- add the providers you want to use -->
<!-- Notice how the name is totally unrelated now
to the actual dbfactory that will be returned
-->
<add invariant="Oracle.DataAccess.Client"
name="A trick to use SqlServer without code change"
description="fubar"
type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</DbProviderFactories>
</system.data>
在这种情况下,你不需要改变代码中的任何内容。您的应用程序将从现在开始使用SqlServer工厂。
tl; dr;
如果您想使用随您使用的.Net Framework一起提供的内置DbFactory for Sql Server,您正在寻找System.Data.SqlClient
。或者将您自己的配置添加到项目特定的invariant
名称中,并通过在您的网络中对其进行配置将其链接到选定的DBFactory。config
你试过了吗?结果是什么? – mason
我现在无法尝试,因为我现在只修改了一小部分项目,并且在修改完所有项目之前我无法运行,但我仍然希望避免由于迁移而导致的最大数量的错误前期。 – Neo
因此,创建一个小范围的概念验证项目,以便您可以对其进行测试。 –