Orcale数据库在Asp.Net Core环境下使用EF Core 生成实体

Orcale建立插拔式PDB数据库

确认CDB环境

win下用win+R执行 sqlplus / as sysdba 进行本地登陆orcale

bash 复制代码
-- 以sysdba身份登录
sqlplus / as sysdba

-- 查看当前容器
SHOW CON_NAME;

-- 查看PDB状态
SELECT name, open_mode FROM v$pdbs;

-- 创建PDB数据文件目录(如果不存在)
-- 在操作系统命令行执行,win手动创建
mkdir D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb


-- 执行创建语句
-- 确保在CDB$ROOT容器中
ALTER SESSION SET CONTAINER = CDB$ROOT;

-- 执行创建PDB语句
-- 以根PDB为模板(pdbseed)

CREATE PLUGGABLE DATABASE mespdb
ADMIN USER mes IDENTIFIED BY "123456"
DEFAULT TABLESPACE mes_ts
    DATAFILE 'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb\mespdb01.dbf' 
    SIZE 500M AUTOEXTEND ON
FILE_NAME_CONVERT = (
    'D:\softs\orcaleDataBase23aiFree\oradata\FREE\pdbseed', 
    'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb'
)
PATH_PREFIX = 'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb'
STORAGE (MAXSIZE 10G);
-- STORAGE (MAXSIZE UNLIMITED)  -- 如果不限制存储空间


-- 查看PDB是否创建成功
SELECT name, open_mode FROM v$pdbs WHERE name = 'MESPDB';

-- 切换到PDB并打开

-- 切换到新创建的PDB
ALTER SESSION SET CONTAINER = mespdb;

-- 打开PDB
ALTER PLUGGABLE DATABASE mespdb OPEN;

-- 或者从CDB$ROOT打开
ALTER PLUGGABLE DATABASE mespdb OPEN READ WRITE;



-- 查看PDB的服务名,应该是把这个作为数据库名字
SELECT name, pdb FROM v$services WHERE pdb = 'MESPDB';


-- 使用新创建的用户登录PDB
sqlplus mes/123456@localhost:1521/mespdb

-- 验证表空间
SELECT tablespace_name, status, contents 
FROM dba_tablespaces 
WHERE tablespace_name = 'MES_TS';



-- 设置PDB自动启动 在CDB$ROOT中执行(sqlplus / as sysdba)
ALTER PLUGGABLE DATABASE mespdb SAVE STATE;
sql 复制代码
CREATE PLUGGABLE DATABASE mespdb
ADMIN USER mes IDENTIFIED BY "123456"
DEFAULT TABLESPACE mes_ts
    DATAFILE 'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb\mespdb01.dbf' SIZE 500M AUTOEXTEND ON
FILE_NAME_CONVERT = ('D:\softs\orcaleDataBase23aiFree\oradata\FREE\pdbseed', 
                     'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb')
PATH_PREFIX = 'D:\softs\orcaleDataBase23aiFree\oradata\FREE\mespdb'
STORAGE (MAXSIZE 10G);

环境

复制代码
需要在NuGet中下载
Oracle.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design

生成实体例子

下面是一个在dotNet 8.0 下的例子

一个webapi程序和一个类库

目标是将Orcale数据库的表生成实体到AspNetOrcaleSamples.Data下

对两个程序集都下载上述的依赖包

下载依赖包后,在打开 NuGet程序包控制器控制台

执行下面的命令即可生成实体和Context

bash 复制代码
Scaffold-DbContext "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mespdb)));User Id=mes;Password=123456" Oracle.EntityFrameworkCore -OutputDir Entities -ContextDir Data -Project AspNetOrcaleSamples.Data -StartupProject AspNetOrcaleSamples -Force

命令详解:

连接字符串:

"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mespdb)));User Id=mes;Password=123456"

这是 Oracle 数据库的连接字符串,指定了主机、端口、服务名和凭据。

提供程序:Oracle.EntityFrameworkCore

使用 Oracle 的 EF Core 提供程序。

参数说明:
-OutputDir Entities:将实体类输出到项目中的 Entities 文件夹。
-ContextDir Data:将 DbContext 类输出到项目中的 Data 文件夹。
-Project AspNetOrcaleSamples.Data:指定目标项目,即实体类和 DbContext 将生成在哪个项目中。
-StartupProject AspNetOrcaleSamples:指定启动项目,通常是 Web 项目,用于读取配置和设计时服务。
-Force:强制覆盖已存在的文件。

生成完成

Asp.Net Core集成EFCore

在WebApi入口Program.cs中

csharp 复制代码
// 注册 DbContext
// 可以注释掉ModelContext中的OnModelCreating方法,使用下面的代码
builder.Services.AddDbContext<ModelContext>(options =>
    options.UseOracle(
        builder.Configuration.GetConnectionString("OracleConnection")
    //,oracleOptions => oracleOptions.UseOracleSQLCompatibility("21")
    ));

然后使用构造函数注入即可使用DBContext

相关推荐
jnrjian1 分钟前
Oracle text index 更新机制
oracle
言慢行善5 分钟前
SpringBoot中的注解介绍
java·spring boot·后端
一勺菠萝丶7 分钟前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
小村儿9 分钟前
连载05-Claude Skill 不是抄模板:真正管用的 Skill,都是从实战里提炼出来的
前端·后端·ai编程
无忧智库10 分钟前
某大型银行“十五五”金融大模型风控与智能投顾平台建设方案深度解读(WORD)
数据库·金融
爱码小白12 分钟前
数据库多表命名的通用规范
数据库·python·mysql
jnrjian26 分钟前
Json text index 未读
oracle
huohuopro27 分钟前
Hbase伪分布式远程访问配置
数据库·分布式·hbase
光电大美美-见合八方中国芯32 分钟前
用于无色波分复用光网络的 10.7 Gb/s 反射式电吸收调制器与半导体光放大器单片集成
网络·后端·ai·云计算·wpf·信息与通信·模块测试
XDHCOM39 分钟前
ORA-12169: TNS连接标识符过长,Oracle报错故障修复与远程处理
数据库·oracle