2014-01-08 78 views
0

我們在VS2010中有一個解決方案。在一些項目中,我們有一個數據集。所有數據集都包含多於1個DataTables和tableAdapter。 該解決方案使用SYSTEM.DATA.ORACLECLIENT開發。 現在我們要轉換爲ODP.net,我們必須使用ORACLE.DATAACCESS.CLIENT。 我們在論壇上做過如何做到這一點。 所以我們已經完成了: - 項目級別的引用「SYSTEM.DATA.ORACLECLIENT」被刪除。 - 增加了參考「ORACLE.DATAACCESS」。 - 全部「使用SYSTEM.DATA.ORACLECLIENT;」被改爲「使用Oracle.DataAccess.Client;」 - 在某些的ConnectionStrings我們刪除「的Unicode =真」 - 我們沒有與添加BindingName =中的OracleCommand 真正做任何事情 - 我們沒有與改變dbtypes像VARCHAR,則VarNumeric,做任何事......VS2010將數據集轉換爲ODP.net

我得不到任何構建錯誤,但運行解決方案時出現「值不在預期範圍內」的錯誤。

現在我感覺我的數據集不是100%轉換爲ODP.net。 所以我需要一些幫助。

如何檢查或確實將數據集轉換爲OPD.net(Oracle.DataAccess.Client)? 屬性如「分層更新」,「DeleteDBDirectMethods」,... 數據集由4個文件表示:.cs,Designer.cs,.xsc和.xss。 這些文件中的代碼似乎很好:我的意思是我看到Oracle.DataAccess.Client。

誰能幫幫我?

回答

0

在將我們的數據集(XSD)從使用System.Data.OracleClient轉換爲Oracle.DataAccess.Client之後,我們也遇到了這個問題。

的問題是該數據集設計還是用「」作爲ProviderType的數據類型。 Oracle不支持「號碼」數據類型。我們必須更改每個表適配器的每個數據集中的ProviderType以及表適配器中每個查詢的每個參數集合。我們對ProviderType使用「十進制」,它似乎工作正常。不要忘記檢查自動生成的「選擇」,「更新」和「刪除」查詢。

我們還沒有改變BindByName = true。

希望這會有所幫助。

0

我跟着this post on the Oracle forums給出的建議:

我試圖從使用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