.NET Core 3.1 with Oracle 12c

环境:

Visual Studio 2019
Oracle 12c 使用 Docker 建立 Oracle 12c & 新增使用者建立範例资料库
.NET Core 3.1

建立新专案

http://img2.58codes.com/2024/201125732WFOpYmvFg.png

选择API,3.1版本
http://img2.58codes.com/2024/20112573yUM4Tl7VHq.png

相关套件

Oracle.EntityFrameworkCoreMicrosoft.EntityFrameworkCore v2.2.6Microsoft.EntityFrameworkCore.Tools v2.2.6

http://img2.58codes.com/2024/20112573p5ykOIgyL2.png

使用Scaffold-DbCoNtext产生相关的DbContext与Model

资料库来源:使用 Docker 建立 Oracle 12c & 新增使用者建立範例资料库
package manager输入:

Scaffold-DbContext "User Id=ot;Password=yourpassword;Data Source=localhost:1521/ORCLCDB.localdomain;" Oracle.EntityFrameworkCore -OutputDir Data -CoNtext DataContext

关于Scaffold-DbContext参数的说明

新增的资料夹(Data)与档案
http://img2.58codes.com/2024/20112573LKoLYa98ug.png
EF Core透过继承DbContext的DataContext与资料库沟通。
其他的CS档,则一一对应到资料库的表格。

在DataContext中,我们不需要OnConfiguring方法,删掉。
http://img2.58codes.com/2024/20112573JMoNM35iUC.png

注册连线服务

在Startup.cs中的ConfigureServices方法,注册连线服务。
可以在其他地方利用DI(Dependency Injection)的方式,使用该服务。

 public void ConfigureServices(IServiceCollection services)        {            services.AddDbContext<DataContext>(options => options.UseOracle(Configuration.GetConnectionString("DefaultConnection")));            services.AddControllers();        }

连线字串在appsetting.json中设定

{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning",      "Microsoft.Hosting.Lifetime": "Information"    }  },  "ConnectionStrings": {    "DefaultConnection": "User Id=ot;Password=yourpassword;Data Source=localhost:1521/ORCLCDB.localdomain;"  },  "AllowedHosts": "*"}

新增API

新增Controllers,空白or执行读取/写入动作的API都可以。
http://img2.58codes.com/2024/201125732VNhUbHUbw.png

ValuesController

[Route("[controller]")][ApiController]public class ValuesController : ControllerBase{    private readonly DataContext _db;    public ValuesController(DataContext db)    {        _db = db;    }    [HttpGet]    public IActionResult Get()    {        var values = _db.Customers.ToList();        return Ok(values);    }}

在建构式中,将DataContext注入(DI DependencyInjection),产生实体 db,并将db赋值给_db。
再使用_db对资料库操作。

在专案中开启命令提示字元,输入:

dotnet watch run

执行并监看专案:
http://img2.58codes.com/2024/20112573oFLlvBcuL3.png

监听两个port,https://localhost:5001 & http://localhost:5000

开启Postman,在Setting将SSL关闭。
不然会收不到任何response。
http://img2.58codes.com/2024/201125739NsuPOFcPg.png

使用Http GET取得https://localhost:5001/values 或 http://localhost:5000/values 的response:
http://img2.58codes.com/2024/20112573TKy2LRk3Gu.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章