您的位置:首页 > 文旅 > 美景 > .Net6通过依赖注入和服务注册的方式管理和连接Oracle数据库

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

2024/10/6 10:38:25 来源:https://blog.csdn.net/beautiful77moon/article/details/140962320  浏览:    关键词:.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;}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com