2017-04-06 93 views
0

我試圖從.net核心連接到Sybase數據庫,但是我沒有找到任何好的庫。有人可以建議庫連接到Sybase?如何從.net核心連接到Sybase數據庫

+0

Sybase本身沒有消息。您可能需要檢查第三方供應商。 –

回答

0

您可以使用Sybase客戶端或Sybase SDK for Developers附帶的ODBC驅動程序嗎?

+0

您能否提供一些示例,我們如何實現? – MMG

+0

我不知道.net核心。如果您知道.net核心可以使用ODBC,則可以安裝適用於Windows的Sybase客戶端或適用於ASE開發人員的SDK(可在sap.com上獲得)。一旦安裝在Windows機器上,您將在Windows上打開「ODBC數據源管理員」以定義到Sybase ASE數據庫的連接源。 https://archive.sap.com/discussions/thread/3565945 – Vince

+0

我們需要在Linux服務器上運行應用程序。你對Linux服務器中的ODBC有什麼想法嗎? – MMG

2

我用Dapper爲我的測試.Net Core 2.0項目使用了MSA.NetCore.ODBC

using System.Collections.Generic; 
using System.Data; 
using System.Data.Odbc; 
using Dapper; 

... 
public IEnumerable<Book> GetBooks() 
{ 
    using (IDbConnection dbConnection = new OdbcConnection("{your_db_connection}")) 
    { 
     IEnumerable<Book> books = dbConnection.Query<Book>("select * from books"); 

     return books; 
    } 
} 
+0

出於某種原因,行計數是正確的(顯然連接很好),但所有的列都返回null。任何想法? – Zerubbabel

+1

使用MSA.NetCore.ODBC連接到sybase沒有問題,但不知何故,所有由Dapper返回的列都是空的,而行計數是正確的。我最終使用了由Nicholas Sizer在下面回答的System.Data.Odbc。不應該爲這個答案投票。 – Zerubbabel

2

你有幾個連接到ASE數據庫在.NET核心的選擇:

  1. 設置ODBC數據源爲Sybase數據庫,並使用System.Data.Odbc命名空間/包上的NuGet。該軟件包目前處於預發行狀態,目標爲.net core 2.0+
    • 如果你不能升級到2.02.1那麼這個選項是不可行的。
    • 有一段時間我試過使用這個包,但是在從過程調用中檢索返回值時遇到了問題。缺乏對命名參數的支持也很煩人。
  2. 在nuget上使用AdoNetCore.AseClient命名空間/包。
    • 我開始使用ODBC,看到無可奈何
    • 這是爲了支持.net core 1.01.12.0(和2.1當它被釋放),並framework 4.6寫這個由於我的挫折。 4.6支持的原因是,它可以是一個直接替換。
    • 如果您想閱讀來源/文檔並找出它是否適合您,那麼這是available on github

在一天結束的時候,這兩個軟件包實現他們的ADO.NET接口(IDbConnectionIDbCommand等)的味道,所以C#代碼進行相應設置將是非常相似:

//System.Data.Odbc style 
using(var connection = new OdbcConnection(...)) 
using(var commmand = connection.CreateCommand()) 
{ 
    connection.Open(); 
    //command stuff, note: named parameters unsupported 
} 

//AdoNetCore.AseClient style 
using(var connection = new AseConnection(...)) 
using(var commmand = connection.CreateCommand()) 
{ 
    connection.Open(); 
    //command stuff 
} 
+1

這應該是答案 – Zerubbabel