0

我们在 VS2010 中有一个解决方案。在某些项目中,我们有一个数据集。所有数据集都包含超过 1 个 DataTables 和 tableAdapter。该解决方案是使用 SYSTEM.DATA.ORACLECLIENT 开发的。现在我们要转换为 ODP.net,我们必须使用 ORACLE.DATAACCESS.CLIENT。我们在论坛上做了如何做到这一点。所以我们已经完成了: - 项目级别的引用“SYSTEM.DATA.ORACLECLIENT”被删除。- 添加了引用“ORACLE.DATAACCESS”。- 所有“使用 SYSTEM.DATA.ORACLECLIENT;” 改为“使用Oracle.DataAccess.Client;” - 在某些连接字符串中,我们删除了“Unicode=true” - 我们还没有在 OracleCommand 中添加 BindingName = true 做任何事情 - 我们还没有做任何事情来改变 dbtypes,如 VarChar、VarNumeric,...

我没有收到任何构建错误,但是在运行解决方案时我收到有关“值不在预期范围内”的错误。

现在我感觉我的数据集没有 100% 转换为 ODP.net。所以我需要一些帮助。

如何检查或确实将数据集转换为 OPD.net (Oracle.DataAccess.Client) ?像“Hierarchical Update”、“DeleteDBDirectMethods”这样的属性呢……一个数据集由 4 个文件表示:.cs、Designer.cs、.xsc 和 .xss。这些文件中的代码似乎没问题:我的意思是我看到了 Oracle.DataAccess.Client。

谁能帮我 ?

4

2 回答 2

0

在将我们的数据集 (XSD) 从使用 System.Data.OracleClient 转换为 Oracle.DataAccess.Client 之后,我们也遇到了这个问题。

问题是数据集设计器仍在使用“数字”作为ProviderType的数据类型。Oracle 不支持“数字”数据类型。我们必须为每个表适配器更改每个数据集中的ProviderType,并为表适配器中的每个查询更改每个参数集合。我们使用“十进制”作为 ProviderType,它似乎工作正常。不要忘记检查自动生成的“选择”、“更新”和“删除”查询。

我们也没有更改 BindByName = true。

希望这会有所帮助。

于 2014-06-18T19:50:21.720 回答
0

我遵循了Oracle 论坛上这篇文章中给出的建议:

我试图从使用 System.Data.OracleClient 适配器转换为使用 ODP.NET,所以我直接进入数据集 xsd 并将提供程序更改为指向 Oracle.DataAccess.Client 并使用正确的提供程序重新生成代码。

这对我有用 - 使用 XML(文本)编辑器打开 XSD,然后找到这一行:

<Connection ... Provider="System.Data.OracleClient">

将其更改为:

<Connection ... Provider="Oracle.ManagedDataAccess.Client">

重建时,.Designer.cs文件中的所有代码都将更新为使用Oracle.ManagedDataAccess.

于 2017-10-04T00:19:06.267 回答