You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6+VS2022下EF Core连接Oracle数据库遇Scaffold超时求助

解决EF Core Scaffold-DbContext连接Oracle超时问题

针对你遇到的Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Connection request timed out错误,以下是具体的排查和解决步骤:

1. 匹配Oracle依赖包版本

Oracle.EntityFrameworkCore 6.21.61需要对应版本的Oracle.ManagedDataAccess.Core依赖,请手动安装该包:

Install-Package Oracle.ManagedDataAccess.Core -Version 6.21.61

确保所有Oracle相关包版本一致,避免版本不兼容导致的连接异常。

2. 简化并调整连接字符串

先移除连接字符串中可能干扰的参数,用基础配置测试,也可以改用更简洁的EZConnect格式:

简化版TNS格式命令

Scaffold-DbContext -Context ComDBContext -Force "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<servicename>)));User Id=<userid>;Password=<password>;Connection Timeout=120;" -Provider Oracle.EntityFrameworkCore -Verbose -OutputDir Models

EZConnect格式命令(规避TNS解析问题)

Scaffold-DbContext -Context ComDBContext -Force "User Id=<userid>;Password=<password>;Data Source=<host>:<port>/<servicename>;Connection Timeout=120;" -Provider Oracle.EntityFrameworkCore -Verbose -OutputDir Models

3. 调整项目平台与VS运行权限

  • 在VS中设置项目目标平台为x64:右键项目 → 属性 → 生成 → 平台目标,选择x64(Oracle官方客户端多为64位,与SQL Developer运行环境匹配)。
  • 以管理员身份运行VS,避免权限限制导致网络连接受阻。

4. 验证网络连通性

用PowerShell执行以下命令,确认主机与端口的网络可达性:

Test-NetConnection <host> -Port <port>

如果返回失败,检查Windows防火墙或公司网络防火墙,允许VS或dotnet.exe访问目标端口。

5. 清理NuGet缓存并重装依赖

  • 删除项目根目录下的obj和bin文件夹。
  • 在包管理器控制台执行缓存清理命令:
    dotnet nuget locals all --clear
    
  • 重新安装所有NuGet包,可暂时移除Microsoft.EntityFrameworkCore.SqlServer包(当前场景无需SQL Server依赖,避免潜在冲突)。

内容的提问来源于stack exchange,提问作者PKonstant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:25:49