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

Orcale建立插拔式PDB数据库

确认CDB环境

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


-- 以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;


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

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中

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

然后使用构造函数注入即可使用DBContext
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值