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

相关推荐
qq_54702617917 分钟前
Redis 常见问题
数据库·redis·mybatis
APIshop18 分钟前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
小陈phd37 分钟前
混合知识库搭建:本地Docker部署Neo4j图数据库与Milvus向量库
数据库·docker·neo4j
2401_838472511 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
知识即是力量ol1 小时前
基于 Redis 实现白名单,黑名单机制详解及应用场景
数据库·redis·缓存
zhihuaba1 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
u0109272711 小时前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
小光学长1 小时前
基于ssm的农业管理系统8y15w544(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
Mr_Xuhhh2 小时前
MySQL表的增删改查(CRUD)操作详解
数据库·windows
野犬寒鸦2 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习