【问题标题】:EF Core Scaffolding with Oracle Autonomous DatabaseEF Core 脚手架与 Oracle 自治数据库
【发布时间】:2020-11-02 05:49:50
【问题描述】:

想知道是否有人使用 Oracle 云的自治数据库产品(不是本地 Oracle 数据库)成功地为 EF Core 搭建了数据库脚手架。棘手的部分似乎是连接字符串。 ADB 现在需要使用钱包下载,我不知道如何处理。

Oracle 的ODP.Net example 显示了一些特殊的配置命令来配置数据提供者。但是,这些命令在使用 Scaffold-DbContext 时似乎不可用。将所需文件放置在与数据连接库相同的位置的想法听起来很棒,除了 NuGet 库似乎没有被持久化并且仅作为构建过程的一部分进行部署。他们在连接 ADB 时的blog post 建议重写连接字符串以使用似乎不受支持的 Easy Connect 格式。

他们在connecting SSRS to ADB 上有一个不相关的帖子,其中有一些我尚未尝试过的数据提供者的命令行配置,因为我不确定它是否会起作用,但似乎它可能在至少要找出某种解决方案。

.NET Core/EF Core 版本为 3.1.9。

我尝试了一些变体...({} 表示已编辑信息的占位符)

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={(description...) from tnsnames.ora}" Oracle.EntityFrameworkCore

结果:请求超时

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={tcps://... from blog}" Oracle.EntityFrameworkCore

结果:无效的连接字符串

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={host}:{port}/{service_name}" Oracle.EntityFrameworkCore

结果:连接服务器失败

如果有人对此有任何智慧可以分享,我将不胜感激。

【问题讨论】:

  • 你能从 Visual Studio 连接吗?
  • 我是 -- 我现在正在使用 Rider,但它能够连接到适当的 JDBC 驱动程序。
  • 那应该可以复用连接字符串了吧?
  • 很遗憾,因为 .NET Core 驱动程序不支持与 JDBC 瘦驱动程序相同的语法,但我终于弄明白了

标签: c# oracle entity-framework entity-framework-core


【解决方案1】:

想通了。

  1. 将 wallet.sso、sqlnet.ora 和 tnsnames.ora 复制到项目根目录
  2. 从 tnsnames.ora 获取数据源名称——您通常会看到三个选项,一个用于 {dbname}_high,一个用于 {dbname}_low,一个用于 {dbname}_medium。请参阅 Oracle 的文档了解它们之间的区别,但 _high 对我来说效果很好。
  3. 执行脚手架命令。下面显示的是使用dotnet ef dbcontext scaffold 的基本示例,dbname 为 TEST,用户 id 为 ADMIN,密码为 PASSWORD
dotnet ef dbcontext scaffold "Data Source=TEST_high;User Id=ADMIN;Password=PASSWORD" Oracle.EntityFrameworkCore
  1. 可能需要修改创建的 DataContext 的OnConfiguring...当我进一步了解时会更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多