2017-04-06 102 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