Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# ASP.NET项目的Oracle到SQL Server数据库迁移_C#_Asp.net_Sql Server_Oracle - Fatal编程技术网

C# ASP.NET项目的Oracle到SQL Server数据库迁移

C# ASP.NET项目的Oracle到SQL Server数据库迁移,c#,asp.net,sql-server,oracle,C#,Asp.net,Sql Server,Oracle,我必须在ASP.NET项目上执行Oracle到SQL Server数据库的迁移,因此我基本上是在编写C#代码来修改与数据库相关的类/方法,以适应新的数据库 特别是,该行的代码中有一个用途 DbProviderFactory myFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client"); 我不知道如何替换上面GetFactory方法的string参数以适应SQL Server数据库 我应该像下面这样做吗 DbProv

我必须在ASP.NET项目上执行Oracle到SQL Server数据库的迁移,因此我基本上是在编写C#代码来修改与数据库相关的类/方法,以适应新的数据库

特别是,该行的代码中有一个用途

DbProviderFactory myFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
我不知道如何替换上面GetFactory方法的string参数以适应SQL Server数据库

我应该像下面这样做吗

DbProviderFactory myFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");

您可以完全控制在
GetFactory
中作为参数输入的内容

您输入的内容映射到配置文件中
的设置,该文件是machine.config和web.config的组合集

在my 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>
在这种情况下,您不必更改代码中的任何内容。从现在起,您的应用程序将使用SqlServer工厂

tl;博士


如果要使用所使用的.Net Framework附带的内置DbFactory for Sql Server,您需要查找
System.Data.SqlClient
。或者使用特定于项目的
不变量
名称添加您自己的配置,并通过在web中配置将其链接到所选的数据库工厂。配置

您尝试过吗?结果如何?我现在不能尝试,因为我目前只修改了项目的一小部分,在全部修改之前我无法运行它,但我仍然希望避免由于前期迁移而产生的最大数量的错误。因此,创建一个小范围的概念验证项目,以便您可以对其进行测试。在我的web配置中,我有“ConnectionString”标记和“”标记包含属性providerName=“Oracle.DataAccess.Client”,因此我是否应该添加另一个带有“providerName=“System.Data.SqlClient”的标记@rene@Neo不,默认情况下,System.Data.SqlClient应该存在于dataprovider中,这样您就不需要在配置文件中使用它。但如果您想覆盖所使用的内容,则可以添加它。
<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" />