一、Nutget包添加
一定要安装Oracle.MangedDataAccess,他是Oracle的驱动程序。如果是使EntityFrameworkCore框架操作Oracle,则还需要引入Oracle.EntityFrameWorkCore
二、 配置文件
在appsetting.json文件中写好数据的连接信息,这里我本来使用的是Data source=tns别名,但是报错了,后面我也看了tnsnames.ora中的信息,tns别名也没有错。但是一直报错,所以我只能将这个连接信息全部写全了。
1 2 3 4 5 6 7 8 9 10 11 12 | { "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]来映射对应的属性名
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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文件夹,将该类(数据库上下文类)放入其中(个人习惯!)
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 peoples { get ; set ; } } } |
五、将数据库上下文服务注册到容器
Program.cs
1 2 3 4 5 6 | using Microsoft.EntityFrameworkCore; using OracleConnectTest.Data; var builder = WebApplication.CreateBuilder(args); //依赖项注入 builder.Services.AddDbContext(options => options.UseOracle(builder.Configuration.GetConnectionString( "oracleConnect" ))); |
六、测试数据库数据
(1)编写PeopleController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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页面
1 2 3 4 5 6 7 8 9 10 | @* For more information on enabling MVC for empty projects, visit https: //go.microsoft.com/fwlink/?LinkID=397860 *@ @{ } @model List; @ foreach ( var item in Model){ <p>@item.id</p> <p>@item.name</p> } |
到此这篇关于.Net使用EF Core框架如何连接Oracle的文章就介绍到这了,更多相关.Net EF Core连接Oracle内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!