我正在使用Visual Studio 2017(第15.2节)。核心1.1并使用Sybase ASE 16.0 sp2。我还在Sybase SDK 16.0中使用 Sybase.AdoNet4.AseClient .dll。
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加载
安装包:包恢复失败。回滚“iKYC.API&#39;”的包裹更改。 在行:1字符:16 + install-package&lt;&lt;&lt;&lt; System.Data.Common -version 4.0.0 + CategoryInfo:NotSpecified:(:) [Install-Package],Exception + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPacka geCommand
我还没有加载EntityFrame工作,因为这是Sybase。 Sybase是我唯一可以使用的数据库。
答案 0 :(得分:2)
我设置了一个项目来测试这个,并且发现,如果你有目标的话,很有趣
<{1}}而不是.net core 2.0
它将构建。
然而,这会导致运行时错误1.1
,因为驱动程序正在寻找.net核心中尚不存在的方法(和命名空间?)。
原因是System.MissingMethodException
目标.net框架4,而不是.net核心。它甚至在文件名(Sybase.AdoNet4.AseClient.dll
)中暗示它。
目前看起来这个驱动程序与.net核心不兼容。也许有一天,当缺少的方法被移植到.net核心......它可能有用吗?
幸运的是,有几种选择:
System.Data.Odbc
命名空间/包。 AdoNet4
目前处于预发布状态,目标是System.Data.Odbc
。如果你被链接到.net core 2.0+
,可能不适合你。
.net core 1.1
包,虽然它使用简单的东西,但我遇到了一些问题。特别是,似乎没有任何方法可以从存储过程中获取返回值,并且缺少对命名参数的支持(我认为是System.Data.Odbc
),这使得它很难使用。AdoNetCore.AseClient
命名空间/包。经过很多挫折之后,我咬紧牙关并开始使用ODBC
驱动程序,该驱动程序定位ADO.NET
,.net core 1.0
,1.1
和2.0
。如果您想查看来源/文档并确定它是否适合您,那就是available on github。
.net framework 4.6
替换为using Sybase.Data.AseClient;
。