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

  • 使用到的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;
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值