.Net6通过依赖注入和服务注册的方式管理和连接Oracle数据库

ops/2024/10/11 9:27:06/
  • 使用到的Nuget包和技术:

        1.ODBC(System.Data.Odbc):用于数据库的连接,支持操作不同类型的数据库

        2. Dapper:一个轻量级的ORM库,用于访问数据库进行数据的增删改查等操作。

        3. Oracle.ManagedDataAccess.Core:Oracle提供的数据库驱动包,提供了.Net应用程序与Oracle进行交互所需要的基本功能(连接管理、数据读取、事务支持)。

        3. 依赖注入: 依赖注入是一种设计模式,用于解耦组件之间的依赖关系。其核心思想是将一个对象的依赖关系(如其他对象或值)从这个对象本身移交给外部容器(通常是依赖注入容器或框架),容器负责在需要时注入这些依赖。依赖注入的目的是增强代码的可测试性、灵活性和可维护性。

        4. 服务注册:在应用程序启动时,将各种服务(如对象、组件、类实例等)注册到应用程序的依赖注入容器中,以便在需要时能够通过依赖注入获取这些服务。服务注册通常在应用程序的启动阶段进行,它告诉依赖注入容器如何创建和提供特定类型的服务实例。

  • 代码示例(实现步骤):

        1. 管理nuget包:

1. System.Data.Odbc
2. Dapper
3. Oracle.ManagedDataAccess.Core

        2. 在配置文件中添加数据库连接信息

{
"ConnectionStrings": {"OdbcConnection": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=8080)))(CONNECT_DATA=(SERVICE_NAME = service)));User Id=your_db_name;Password=password;"
}

        3. 创建管理数据库连接的服务:

//接口
using System.Data;namespace AnitaProjects.OdbcService
{public interface IDbService{IDbConnection GetDbConnection();}
}
//实现类
using Oracle.ManagedDataAccess.Client;
using System.Data;namespace AnitaProjects.OdbcService
{public class DbService : IDbService{public IConfiguration _config;public DbService(IConfiguration config){_config = config;}public IDbConnection GetDbConnection(){return new OracleConnection(_config["ConnectionStrings:OdbcConnection"]);}}
}

         4. 进行服务注册(builder.Services.AddScoped<IDbService, DbService>())

using AnitaProjects.OdbcService;var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IDbService, DbService>(); //服务注册var app = builder.Build();// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseAuthorization();app.MapControllers();app.Run();

        5. 写一个接口查询用户信息

using AnitaProjects.OdbcService;
using Microsoft.AspNetCore.Mvc;
using Dapper;
using AnitaProjects.Model;namespace AnitaProjects.Controllers
{[ApiController][Route("[controller]/[action]")]public class DbOperationController{IDbService _dbService; //依赖注入:通过构造函数注入public DbOperationController(IDbService dbService){_dbService = dbService;}[HttpGet]public object GetPersonInfo(string userId){var cnn = _dbService.GetDbConnection();string sql = string.Format("SELECT * FROM BASE_PERSON WHERE ID='{0}'", userId);personInfo person=cnn.Query<personInfo>(sql).FirstOrDefault();return person;}}
}

http://www.ppmy.cn/ops/90175.html

相关文章

Istio 金丝雀发布

转载&#xff1a;备考ICA-Istio 金丝雀实验4 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld-destination #测试 kubectl get svc,pods for i in {1..10};do curl $(kubectl get svc helloworld|grep helloworld|awk {print $3":"$5}|a…

智算新风向丨趋动科技获中国信通院泰尔实验室首张智算资源池化能力泰尔测评证书

近日&#xff0c;趋动科技“OrionX AI算力资源池化软件”经中国泰尔实验室依据《FG-Z14-0172-01智算资源池化平台测试方案》评估测试&#xff0c;获得智算资源池化能力泰尔测评证书&#xff0c;成为该领域首个完成此评价的产品。 图1.OrionX通过智算资源池化平台评测 随着AI大…

如何用密码保护你的 WordPress 管理员 (wp-admin) 目录

在维护 WordPress 网站时&#xff0c;确保 wp-admin 目录安全是非常重要的。为该目录添加密码保护可以有效提高网站安全性&#xff0c;防止未经授权的访问。这篇文章将介绍实现这一目标的两种方法。 1.为什么要为 wp-admin 目录添加密码保护 WordPress 管理员后台是网站的核心…

利用 IP 地址进行社交工程攻击?

社交工程攻击是网络安全的主要威胁之一。现在攻击者不再仅依赖技术漏洞&#xff0c;而是想利用人性的弱点来获取有价值的信息或实现非法目的。 IP 地址在社交工程攻击中的作用 定位和伪装获取目标用户的 IP 地址&#xff0c;大致确定目标用户地理位置&#xff0c;然后伪装成当…

C++空指针(nullptr)

C空指针(nullptr) ​ 在C语言中我们把空指针定义成NULL&#xff0c;但是这在C中会有所问题&#xff0c;因为C对指针类型转换比较严格。下面让我来深入了解一下NULL与nullptr。 NULL实际就是一个宏&#xff0c;在C头文件(stddef.h)中&#xff0c;可以看到如下代码&#xff1a;…

qaxobject 插入图片 excel

要在Excel中使用QAxObject插入图片&#xff0c;你需要使用Qt的ActiveX支持。以下是一个简单的例子&#xff0c;展示如何使用QAxObject插入图片到Excel工作表的指定位置。 请确保你的系统上安装了Excel&#xff0c;并且你的Qt版本支持ActiveX。 #include <QAxObject> vo…

[kimi笔记].net平台

.NET 是一个由微软公司开发的软件开发平台&#xff0c;它的历史可以追溯到2000年左右。.NET 框架最初是为Windows操作系统设计的&#xff0c;但随着时间的发展&#xff0c;微软逐步扩展了.NET 的应用范围&#xff0c;使其可以在多个平台上运行。以下是.NET 几个平台的历史和平台…

linux pidstat

pidstat是一个监控个别进程在Linux系统上的资源使用情况的工具&#xff0c;它是sysstat工具包的一部分。pidstat可以报告CPU、内存、I/O、上下文切换、线程等多方面的统计信息&#xff0c;对于性能分析和问题诊断非常有用。 基本用法 pidstat [选项] [间隔] [次数]选项&#…