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

相关推荐
啊吧怪不啊吧2 小时前
SQL之用户管理——权限与用户
大数据·数据库·sql
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
NineData2 小时前
NineData 数据库 DevOps 正式支持谷歌云,全面接入 GCP 数据源
运维·数据库·devops·ninedata·gcp·玖章算术·数据智能管理平台
TT哇2 小时前
Spring Boot 项目中关于文件上传与访问的配置方案
java·spring boot·后端
程序员阿周2 小时前
boost、websocketpp、curl 编译(Windows)
后端
踏浪无痕2 小时前
信不信?一天让你从Java工程师变成Go开发者
后端·go
浪里行舟2 小时前
使用亚马逊云科技 Elemental MediaConvert 实现 HLS 标准加密
后端
韩立学长3 小时前
Springboot考研自习室预约管理系统1wdeuxh6(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
残花月伴3 小时前
天机学堂-day5(互动问答)
java·spring boot·后端