.Net使用EF Core框架如何连接Oracle

devtools/2025/2/13 9:45:10/

目录

一、Nutget包添加

二、 配置文件

三、创建实体类

四、创建数据库上下文类

五、将数据库上下文服务注册到容器

六、测试数据库数据

(1)编写PeopleController

(2)编写People页面


一、Nutget包添加

一定要安装Oracle.MangedDataAccess,他是Oracle的驱动程序。如果是使EntityFrameworkCore框架操作Oracle,则还需要引入Oracle.EntityFrameWorkCore

二、 配置文件

在appsetting.json文件中写好数据的连接信息,这里我本来使用的是Data source=tns别名,但是报错了,后面我也看了tnsnames.ora中的信息,tns别名也没有错。但是一直报错,所以我只能将这个连接信息全部写全了。

{"ConnectionStrings": {"oracleConnect": "User Id=用户名;Password=用户密码;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=服务名称)))"},"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*"
}

三、创建实体类

因为Oracle默认的话不管是大写还是小写,最后都会转换成大写,所以如果实体类的名字如果和表明不一致的话(大写小写Oracle是有区别的),会报错!

所以使用了[Table]属性来映射对应的表。

包括属性名也是如此,使用了[Column]来映射对应的属性名

using System.ComponentModel.DataAnnotations.Schema;namespace OracleConnectTest.Models
{[Table("PEOPLE")]public class People{//oracle默认全部是大写[Column("ID")]public int id { get; set; }[Column("NAME")]public string name { get; set; }}
}

四、创建数据库上下文类

创建一个Data文件夹,将该类(数据库上下文类)放入其中(个人习惯!)

using Microsoft.EntityFrameworkCore;
using OracleConnectTest.Models;
using System.ComponentModel.DataAnnotations.Schema;namespace OracleConnectTest.Data
{public class OracleConnectTestContext : DbContext{public OracleConnectTestContext(DbContextOptions options) : base(options){}public DbSet<People> peoples { get; set; }}
}

五、将数据库上下文服务注册到容器

Program.cs

using Microsoft.EntityFrameworkCore;
using OracleConnectTest.Data;var builder = WebApplication.CreateBuilder(args);//依赖项注入
builder.Services.AddDbContext<OracleConnectTestContext>(options =>options.UseOracle(builder.Configuration.GetConnectionString("oracleConnect")));

六、测试数据库数据

(1)编写PeopleController

using Microsoft.AspNetCore.Mvc;
using OracleConnectTest.Data;namespace OracleConnectTest.Controllers
{public class PeopleController : Controller{private readonly OracleConnectTestContext _context;public PeopleController(OracleConnectTestContext context){_context = context;}public IActionResult Index(){var s=_context.peoples.ToList();return View(s);}}
}

(2)编写People页面

@*For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
}
@model List<OracleConnectTest.Models.People>;@foreach(var item in Model){<p>@item.id</p><p>@item.name</p>}

 


http://www.ppmy.cn/devtools/158445.html

相关文章

SAP系统常见的接口方式及特点介绍

【SAP系统研究】 在SAP系统中,接口主要用于系统间或系统与外部应用的数据交换和集成。以下是常见的接口方式及其特点: 一、IDoc方式 IDoc,Intermediate document,是SAP历史很悠久的接口技术,是一种系统间通用的数据交换媒介文件。IDoc基于XML的标准格式,常用于EDI、系…

vscode/cursor+godot C#中使用socketIO

在 Visual Studio Code(VS Code)中安装 NuGet 包&#xff08;例如SocketIOClient&#xff09;&#xff0c;你可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用dotnet cli 打开终端&#xff1a;在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…

51c自动驾驶~合集49

我自己的原文哦~ https://blog.51cto.com/whaosoft/13164876 #Ultra-AV 轨迹预测新基准&#xff01;清华开源&#xff1a;统一自动驾驶纵向轨迹数据集 自动驾驶车辆在交通运输领域展现出巨大潜力&#xff0c;而理解其纵向驾驶行为是实现安全高效自动驾驶的关键。现有的开…

正则表达式--元字符-限定符(4)

正则的限定元字符 表示前边一个符号代表的内容出现多少次 1.* ------ 表示0~正无穷次 2. ------ 表示 1~正无穷次 3. ? ------ 表示 0~1次 4. {n} ------ 表示 限定 n 次, 不能多也不能少 5. {n,} ------ 表示 最少 n 次 6. {n,m} ------ 表示 最少 n 次, 最多 m 次 <!DO…

华为云之CodeArts IDE的使用体验

一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面&#xff0c;是利用华为自研IDE内核技术&#xff0c;面向华为云开发者提供的智能化可扩展桌面集成开发环境&#xff08;IDE&#xff09;&#xff0c;结合华为云行业和产业开发套件&#xff0c;实现…

DeepSeek 助力 Vue 开发:打造丝滑的步骤条

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

AI智能化办公与AI绘画商业应用

文章目录 AI智能化办公百度文心一言使用方法与技巧从入门到精通内容简介获取方式 AI绘画商业应用大全内容简介获取方式 AI智能化办公百度文心一言使用方法与技巧从入门到精通 内容简介 本书全面介绍了百度文心一言的基本操作和在多个领域的应用。 全书共分为12章&#xff0c;其…

Arduino 第四章:数字输出 —— 深入解析引脚差异与 LED 顺序点亮实践

引言 在电子制作与自动化控制领域&#xff0c;Arduino 以其简单易用和强大的扩展性成为众多爱好者和专业开发者的首选平台。数字输出作为 Arduino 基础且重要的功能之一&#xff0c;能让我们通过程序控制外部设备&#xff0c;如点亮 LED 灯、驱动继电器等。在这一章节&#xf…