【问题标题】:Entity Framework Core : connect to Oracle databaseEntity Framework Core:连接到 Oracle 数据库
【发布时间】: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

获取查询数据就够了。

我的项目设置有什么问题?

【问题讨论】:

标签: .net oracle entity-framework-core .net-5


【解决方案1】:

通过在连接字符串中省略 TnsName 解决了问题

https://www.connectionstrings.com/net-framework-data-provider-for-oracle/omiting-tnsnamesora/

更改后我还删除了此代码行:

OracleConfiguration.OracleDataSources.Add

【讨论】:

    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 2021-01-07
    • 2019-12-28
    • 2018-03-24
    • 2021-06-30
    • 2018-07-16
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多