Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库

1、前言

本次主要采用Asp.net core3.1来实现API服务(优势:跨平台),其中此技术比较新颖,其中连接Oracle遇到各种困难(特别是资料较少,各个插件版本比较多,且依赖的版本也有要求),经过各种尝试,最终可以连接上Oracle数据库,此处仅仅是demo。

2、技术路线

2.1 Asp.net core 3.1

ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接Internet的新式应用程序。 使用ASP.NET Core,您可以:

1)创建Web应用程序和服务、IoT应用和移动后端。

2)在Windows、macOS和Linux上使用喜爱的开发工具。

3)部署到云或本地。

4)在.NET Core或.NET Framework上运行。

为何选择 ASP.NET Core?

数百万开发人员使用过(并将继续使用)ASP.NET 4.x 创建Web应用。ASP.NET Core是重新设计的ASP.NET 4.x,更改了体系结构,形成了更精简的模块化框架。

ASP.NET Core 具有如下优点:

1)生成Web UI和Web API的统一场景。

2)针对可测试性进行构建。

3)Razor Pages可以使基于页面的编码方式更简单高效。

4)Blazor允许你在浏览器中使用C#和JavaScript。 共享全部使用.NET编写的服务器端和客户端应用逻辑。

5)能够在Windows、macOS和Linux上进行开发和运行。

6)开放源代码和以社区为中心。

7)集成新式客户端框架和开发工作流。

8)支持使用gRPC托管远程过程调用(RPC)。

9)基于环境的云就绪配置系统。

10)内置依赖项注入。

11)轻型的高性能模块化HTTP请求管道。

12)能够托管于以下各项:Kestrel、IIS、HTTP.sys、Nginx、Apache、Docker

13)并行版本控制。

14)简化新式Web开发的工具。

2.2 Microsoft.EntityFrameworkCore2.2.6

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用Entity Framework数据访问技术。

EF Core 可用作对象关系映射程序(O/RM),以便于.NET开发人员能够使用.NET对象来处理数据库,这样就不必经常编写大部分数据访问代码了。

2.3 Oracle.EntityFrameworkCore2.1.19

此插件主要是为了连接Oracle数据库;

依赖项:

Microsoft.EntityFrameworkCore.Relational (>= 2.1.11 && < 3.0.0)

Oracle.ManagedDataAccess.Core (>= 2.19.60 && < 2.20.0)

3、总结

在经过两天的尝试,最大的坑是此Oracle.EntityFrameworkCore2.1.19插件需要有依赖插件,并且版本要对,否则一直会报错;

3.1尝试Citms.EntityFrameworkCore.Oracle连接Oracle

其中会报错:System.TypeLoadException:“Method 'get_Info' in type 'Microsoft.EntityFrameworkCore.Oracle.Infrastructure.Internal.OracleOptionsExtension' from assembly 'Citms.EntityFrameworkCore.Oracle, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.”。

3.2尝试Oracle.ManagedDataAccess.Core连接Oracle

最终通过ASP.NET Core3.1通过EF Core连接Oracle,需要注意依赖项版本号问题。

4、源码

4.1实体

[Table("数据库中表名")]public classBaseEntity

{

[Column("表中字段")]public string Id { get; set; }

[Column("表中字段")]public string Name { get; set; }

}

4.2 数据库上下文

public classEntityOracleDBContext: DbContext

{public static readonlyLoggerFactory MyLoggerFactory= new LoggerFactory(new[] { newDebugLoggerProvider() });public EntityOracleDBContext(DbContextOptions options) : base(options)

{

}protected override voidOnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.Entity();

}protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

optionsBuilder

.UseLoggerFactory(MyLoggerFactory);

}public DbSet TodoItems { get; set; }

}

4.3 Controller层

[Route("api/[controller]")]public classEmployeeController : Controller

{

EntityOracleDBContext context;publicEmployeeController(EntityOracleDBContext context)

{this.context =context;

}//GET: api/

[HttpGet]public IEnumerableGet()

{

List todoItems =context.TodoItems.ToList();return todoItems.Select(t=>t.Id);

}//GET api//5

[HttpGet("{id}")]public string Get(stringid)

{

BaseEntity todoItem=context.TodoItems.Find(id);returntodoItem.Name;

}//POST api/

[HttpPost]public void Post([FromBody]stringvalue)

{

}//PUT api//5

[HttpPut("{id}")]public void Put(int id, [FromBody]stringvalue)

{

}//DELETE api//5

[HttpDelete("{id}")]public void Delete(intid)

{

}

}

4.4 调取测试

https://localhost:5001/api/employee/927b582d-a897-4d7b-8cca-bd0c63386ad9

asp.netcore oracle,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...相关推荐

  1. asp连接oracle 服务端,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  2. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  3. ASP.NETCore

    0. ASP.NETCore 介绍 ASP.NETCore是一个新的开源和跨平台的框架,用于构建如Web应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.NET C ...

  4. asp oracle9i 链接oracle,解决使用ASP无法连接ORACLE 9i数据库的问题

    今天,在一台WIN2K SERVER 服务器上,通过ASP安装在本机的 Oracle9i 时,发现错误,根本无法连接上数据库.其错误描述如下: Microsoft OLE DB Provider fo ...

  5. Java JDBC连接oracle、SQL server、My Sql数据库的驱动

    JAVA创建以JDBC连接数据库的程序 ①加载JDBC驱动程序: 1.oracle---------JDBC try{//加载oracle的驱动类Class.forName("oracle. ...

  6. Navicat连接Oracle的几个问题及解决方案

    Navicat连接Oracle的几个问题及解决方案 参考文章: (1)Navicat连接Oracle的几个问题及解决方案 (2)https://www.cnblogs.com/FrankLei/p/6 ...

  7. python3连接oracle 11G数据库

    Python连接Oracle数据库 环境说明(保持各个关联环境版本对应非常重要): 系统环境:win10 64位 数据库版本:Oracle 11G  64位 python版本:python 3.7.8 ...

  8. oracle代码连接,Oracle连接核心知识点

    一:开始进入Oracle的世界吧 借我学校一位Oracle学的很牛逼的老师一句话:学好Oracle,再去学习其他数据库的时候,你会有一种:一览众山小的感觉! 注意:本博客的所有Oracle的技术都是在 ...

  9. bde oracle 商友的流程_怎么用BDE连接Oracle?(100分)

    配置BDE 开始->程序->Borland Delphi 5->BDE Administrator 1.建个数据模块,file->new->data module 2.在 ...

最新文章

  1. 数据洪流时代的芯片之变
  2. 自学python找工作难吗-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
  3. 2017年9月9日普级组 优美三角剖分
  4. 基于MIG控制器的DDR3读写控制详解
  5. Spring构造注入重载
  6. mysql 设置client char_mysql编码问题:show variables like “%char%”
  7. 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux
  8. 同比暴增3700%!百度取代谷歌成世界第二
  9. win下mysql数据库双机配置_[数据库]windows下使用mysql双机热备功能
  10. “编程能力差,90%输在了数学上!”骨灰级开发:其实你们都是瞎努力!!
  11. 【ASP.Net MVC3 】使用Unity 实现依赖注入
  12. 计算机技术需要学单片机吗,手把手教你学51单片机
  13. 樱花大战资源分析之二 SPR文件格式不完全分析
  14. 电竞天才Uzi退役:从网瘾少年到年薪千万,留下最大遗憾
  15. 按键精灵---后台按键及鼠标操作
  16. 立体栅格地图_基于八叉树表示的三维栅格地图路径规划系统及方法与流程
  17. 计算机多核启动原理,多核cpu工作原理 不进来看看?
  18. Android 自定义二维码
  19. High Version Count Issues
  20. qt -- QSpinBox、QDoubleSpinBox

热门文章

  1. 子菜单挤压下方块元素_小心上瘾!全新类型的消除游戏|《土耳其方块》
  2. mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
  3. Apache ECharts各种图表页面展示
  4. PHP实现页面跳转的几种方法
  5. mysql 自增列 类型_MySQL--自增列学习
  6. ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例
  7. centos6.5 yum安装mysql_CentOS 6.5使用yum安装MySQL快速上手必备
  8. 【cmd】windows cmd 中判断命令执行成功
  9. 【oracle】to_date
  10. 设置按峰值带宽计费_如何理解串联谐振电路中的带宽?