【发布时间】:2021-10-02 06:01:35
【问题描述】:
在一个 .NET 5.0 框架项目中,我引用了以下包:
<PackageReference Include="Oracle.EntityFrameworkCore" Version="5.21.1" />
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.1" />
在ConfigureSettings方法中我添加了这段代码:
services.AddDbContext<IMyDbContext, MyDbContext>((provider, options) =>
{
OracleConfiguration.OracleDataSources.Add("dev", "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP )(HOST = <host> )(PORT = 1521 )) (CONNECT_DATA = (SERVICE_NAME = DEV ) ) )");
options.UseOracle(connectionString);
});
services.AddScoped(sp => (MyDbContext)sp.GetRequiredService<IMyDbContext>());
services.AddEntityFrameworkOracle();
稍后在我的服务中,我试图查询一个简单的结果:
await _dataContext.MyTable.CountAsync(cancellationToken)
但我收到以下错误(错误消息为德语):
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden
OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden
同时我在 Visual Studio Server Explorer 中使用以下连接字符串创建了一个连接:
Data Source=dev;Persist Security Info=True;User ID=*******;Password=***********;Unicode=True
获取查询数据就够了。
我的项目设置有什么问题?
【问题讨论】:
-
您可能想在 TNS 连接字符串中尝试
HOST = dev。基本上连接字符串是不正确的,你必须把它弄对 -
@SvyatoslavDanyliv 谢谢! connectionstrings.com/net-framework-data-provider-for-oracle/… 解决了我的问题
标签: .net oracle entity-framework-core .net-5