2017-07-21 68 views
1

我正在使用Visual Studio 2017(v 15.2)。 Core 1.1並使用Sybase ASE 16.0 sp2。我也在Sybase SDK 16.0中使用Sybase.AdoNet4.AseClient .dll。Sybase ASE 16x和.NET Core 1.1發起SP調用

public IEnumerable<Countries> GetCountry() 
    { 

     var con = new AseConnection(ConnectionString); // No Errors 
     var cmd = con.CreateCommand(); // Error described below 

     return null; 
    } 

CreateCommand()生成,在IDE(波浪紅線)執行以下操作: The type 'Db Connection is defined in an assembly that is not referenced. You must add a reference to assembly 'system.Data, Version=4.0.0.0, Culture=neutral, PublicKey=b77a5c561934e089'

我每PackageManger

  • 安裝封裝System.Data.Common -version 4.1加載.0,加載但錯誤仍然存​​在。
  • install-package System.Data.Common -version 4.3.0,加載但錯誤仍然存​​在。
  • 試圖安裝安裝封裝System.Data.Common -version 4.0.0, 但得到一個錯誤(如下所示):
  • 試圖安裝安裝封裝System.Data.Common -version 4.0.0.0,但得到上述同樣的錯誤(如下圖所示):

安裝-套餐:套餐恢復失敗。回滾'iKYC.API'的軟件包更改。 在行:1字符:16 +安裝封裝< < < < System.Data.Common -version 4.0.0 + CategoryInfo:NotSpecified:(:) [安裝封裝],異常 + FullyQualifiedErrorId:NuGetCmdletUnhandledException,的NuGet .PackageManagement.PowerShellCmdlets.InstallPacka geCommand

我還沒有加載EntityFrame的工作,因爲這是Sybase。 Sybase是我可以使用的唯一數據庫。

+0

是否有人成功使用Sybase和CORE? –

+0

我們一直致力於[此驅動程序](https://www.nuget.org/packages/AdoNetCore.AseClient)。 要閱讀一些文檔並查看它當前支持的更詳細的描述,請[在github上查看](https://github.com/DataAction/AdoNetCore.AseClient)。 –

回答

2

我建立了一個項目來測試這個,發現,有趣的是,如果你的目標是 .net core 2.0而不是1.1它會建立。

但是,這會導致運行時錯誤System.MissingMethodException,因爲驅動程序正在查找.net核心中尚不存在的方法(和名稱空間?)。

原因是Sybase.AdoNet4.AseClient.dll以.net framework 4爲目標,而不是.net core。它甚至在文件名中暗示它(AdoNet4)。

現在,它看起來像這個驅動程序與.net核心不兼容。也許有一天,當缺少的方法移植到.net核心...它可能工作?

幸運的是,有幾個選擇:

  1. 使用System.Data.Odbc命名空間/包。 System.Data.Odbc目前處於預發佈狀態,看起來目標.net core 2.0+。如果你被鏈接到.net core 1.1可能不適合你。
    • 就我個人而言,我已經搞砸了System.Data.Odbc包,雖然它與簡單的東西工作,我有一些問題。特別是,似乎沒有辦法從存儲過程中獲得返回值,並且缺少對命名參數的支持(我認爲這是一個ODBC事情),因此很難合作。
  2. 使用AdoNetCore.AseClient命名空間/包。在經歷了很多挫折之後,我咬緊牙關,開始研究ADO.NET驅動程序,該驅動程序的目標是.net core 1.0,1.1,2.0.net framework 4.6。如果您想查看來源/文檔並找出它是否適合您,那麼這是available on github
    • 要使用此驅動程序,只需引用該程序包並將using Sybase.Data.AseClient;替換爲using AdoNetCore.AseClient;即可。
+0

感謝您告訴我,我已經開始使用[Link] [ODBC Preview Package] [1],但尚未測試性能。將看看你的鏈接! [1]:HTTPS://www.nuget.org/packages/System.Data.Odbc/4.5.0-preview1-25914-04 –