Oracle发布了测试版driver ODP for dotnet core 2(最后!)。但我不能让它发挥作用。有人做过吗?如果是,请将代码发送给我或帮我修好这个代码\ o
有用:我正在使用Visual Code,项目“dotnet new mvc”(。net 2),我通过Nuget Add Package工具安装Oracle.ManagedDataAccess.Client
(CTRL + P,... )
这是我的代码:
public static OracleConnection AbrirSigmaUser(AutenticacaoModel autenticacao)
{
try
{
string _connectionString;
_connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.15)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=databaseName)));User Id=UserName;Password=***;";
OracleConnection conexao = new OracleConnection();
conexao.ConnectionString = _connectionString;
//right here the program exit
conexao.Open();
return conexao;
}
catch (System.Exception ex)
{
throw new Exception("Não foi possível conectar ao banco de dados!" + "\nErro: " + ex.Message);
}
}
编译器抛出了很多关于缺少dll的例外,所以我通过Nuget Add Package工具安装了它们:
//required for connection
using Oracle.ManagedDataAccess.Client;
using System.Configuration;
using System.Security.Permissions;
using System.Security.Principal;
在添加了所有要求的dll之后,程序进入conexao.Open()并且永远不会回来,抛出未处理的异常:
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Security.Principal.WindowsImpersonationContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPRThreadFunc(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadPoolWorkQueue.Dispatch()
The program '[8860] Sensatta-Analytcs.dll' has exited with code 0 (0x0).
是否真的需要进行简单的连接?
如果遗漏了某些内容(例如代码示例)以便找出问题,请告诉我!
答案 0 :(得分:1)
对我来说,解决方案是仅安装Oracle.ManagedDataAccess.Core
NuGet软件包。我还安装了Oracle.ManagedDataAccess
,需要卸载它们以解决错误。
答案 1 :(得分:1)
将 Oracle.ManagedDataAccess.Core nuget 包安装到您的项目中。
确保您的 .csproj 文件中包含以下代码:
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.1" />
同时从您的项目中卸载“Oracle.ManagedDataAccess”。
确保以下代码已从您的 .csproj 文件中删除:
<PackageReference Include="Oracle.ManagedDataAccess" Version="19.10.1" />
答案 2 :(得分:0)
正如@Lesiak所说,我使用了错误的包(右边是Oracle.ManagedDataAccess.Core.dll
)。但这也是其他人可能会陷入的错误。因为从Oracle Link下载zip文件时,dll名称为Oracle.ManagedDataAccess.dll
而不是Oracle.ManagedDataAccess.Core.dll
容易出错。
答案 3 :(得分:0)
对我来说,把以前版本的 Oracle.ManagedDataAccess.Core 放在工作上,最后一个版本有问题。