Asp .NetCore 从数据库加载配置(一)

本文介绍如何在ASP.NET Core项目中从数据库加载配置信息,包括创建项目、配置数据库连接、编写自定义配置源及配置加载流程。

        一般来说,Asp .NetCore 应用从官方默认的appsetting.json文件中读取就好,而且利用option模式中的 IOptionsSnapSot<T>、IOptionsMonitor<T>可以动态加载配置,你可以直接修稿json文件来保证。但是这样也有一定的不方便之处:你的配置放在单个json文件,加入你的为服务项目有10个,如果因为项目需求变了,要更改配置,就要到10个json文件中修改,而如果这10个项目的配置都在一个数据库中,那么只需一个脚本就能改好了。

        不过要从数据库动态同步加载需要做一些额外的工作,本节就先介绍静态加载数据库配置。

目录

1.搭建基本框架

a. 创建asp .netcore 项目

 b.创建实体类,数据文上下文类

c.添加数据库连接信息

 d.迁移、更新数据库

2.编写自定义配置源

2.1 实现ConfigurationProvider类

2.2 ConfigurationSource

 2.3 配置ConfigureAppConfiguration



1.搭建基本框架

        由于这里不是重点,因此只是简单的介绍关键步骤,如果有不懂的具体可以看此.NET 6.0 - Connect to MySQL Database with Entity Framework Core,有详细讲解。

a. 创建asp .netcore 项目

        可以创建webApi项目也可以创建MVC项目。由于使用的是MySql和EFcore,因为项目要添加下面三个包:

Pomelo.EntityFrameworkCore.MySql
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools

 b.创建实体类,数据文上下文类

        实体类保存我们要的配置信息,参考json文件,我们保存为Key-Value模式:

    public class ConfigurationEntity
    {
        [Key]
        public string Key { get; set; }
        public string Value { get; set; }
    }

然后创建数据库上下文类:

    public class ConfigurationDbContext:DbContext
    {
        public ConfigurationDbContext(DbContextOptions options):base(options)  { }
        public DbSet<ConfigurationEntity>? configurationEntities { get; set; }
    }

c.添加数据库连接信息

        一般情况我们可以将数据库的链接配置放到appsettings.json文件中,不过有时候我们不想让用户修改,可以放到机密文件中,机密文件(secret.json)也是asp框架下默认的读取文件之一,其加载顺序在appsettings.json之后,也就是如果你在两个json中都配置了ConnectionString,根据后来居上的法则,secret.json会生效。具体操作如下:

        在解决方案资源管理器窗口,在你当前项目上右键,弹出菜单中选择“管理用户机密

 选择之后就会弹出secrets.json 编辑页面,和appsettings.json同样配置即可:

 然后就可以将我们的数据库上下文类(DbContex)配置到服务中:

builder.Services.AddDbContext<ConfigurationDbContext>(opts =>
    opts.UseMySql(ConnectionString, ServerVersion.AutoDetect(ConnectionString)));

&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值