如何从.net核心连接到Sybase数据库

Mik*_*mov 4 sybase sybase-ase .net-core asp.net-core

我试图从.net核心连接到Sybase数据库,但我找不到任何好的库.有人可以建议库连接到Sybase吗?

Nic*_*zer 7

您有几种连接到.net核心中的ASE数据库的选项:

  1. 为Sybase数据库设置ODBC数据源,并System.Data.Odbc在nuget上使用命名空间/包.该软件包目前处于预发布和目标阶段.net core 2.0+.
    • 如果无法升级到2.0或者2.1此选项不可行.
    • 有一段时间我尝试使用这个包,但在从过程调用中检索返回值时遇到了问题.此外,缺乏对命名参数的支持非常烦人.
  2. AdoNetCore.AseClient在nuget上使用命名空间/包.
    • 我开始写这篇文章是因为我在使用ODBC方面感到沮丧,并且别无选择
    • 这是为了支持.net core 1.0,1.1,2.0(并且2.1当它被释放),和framework 4.6.4.6支持的原因是它可以成为替代品.
    • 如果你想阅读资源/文档并找出它是否适合你,它可以在github上找到.

在一天结束的时候,这两个软件包实现他们的ADO.NET接口(味道IDbConnection,IDbCommand等等),所以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
}
Run Code Online (Sandbox Code Playgroud)


Iva*_*siv 5

我已经将MSA.NetCore.ODBC和 Dapper 用于我的测试 .Net Core 2.0 项目。

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用 MSA.NetCore.ODBC 连接到 sybase 没有问题,但不知何故 Dapper 返回的所有列都是空的,而行数是正确的。我最终使用了 System.Data.Odbc,如下面 Nicholas Sizer 的回答。不应该对这个答案投赞成票。 (4认同)