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

相关推荐
东风破_5 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
东风破_5 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_6 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
橙子家6 小时前
OSS 文件上传的几个风险点和解决方案
数据库
jay神7 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
2601_962066498 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext8 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
2601_9620738110 小时前
Spring全面详解(基础版)
java·后端·spring
数字新视界10 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..10 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft