.NET 5 数据库连接解决方案

作者:outlela  来源:本站原创   发布时间:2020-12-15 16:1:55

程序一般都离不开数据,要与数据交互离不开数据库连接。

.NET CORE 弃App.Config而抱appsettings.json,相应的配置也得改变,下面就来讨论一下如何配置。

注意:此文是建立在文章 C#/.Net/.Net Core 小知识点汇集 第6点 EF CORE 自动生成Model 条件下进行的改进。

 1、appsettings.json 配置 数据库连接

{
  "ConnectionStrings": {
    "Database": "kHLE5AcyKjW7N65d3FoUA8g6KGjAUSc37R1TPC8nSIS2a1kFkopZ2JzeXMclXor6jtCX+pf8Lqe42tEe+JL2e4h/F6rBNp5tZRr8lFwe4o8="
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"

}

注意:ConnectionStrings节点下的Database节点即为演示项目的数据库加密连接字符串。

非加密格式应为:

Data Source=192.168.9.1;Initial Catalog=Test;User ID=sa;Password=123;

解释一下吧:Data Source=服务器地址;Initial Catalog=数据库名;User ID=登录名;Password=密码

2、Startup 注入连接

services.AddDbContext<DatabaseContext>(a => a.UseSqlServer(AesEncrypt.DecryptString(Configuration.GetConnectionString("Database"), AesEncrypt.DbKey)));

注意:Configuration.GetConnectionString("Database"),引号里面的名称要和第一步的名称一样!!!因为演示项目是加密连接字符串,所以这一步进行了解密,如果实际项目中不需要解密操作,忽略即可。

3、加密 DatabaseContext

以上两步配置好后,再次进行Scaffold-DbContext操作,但是和之前( C#/.Net/.Net Core 小知识点汇集 第6点 EF CORE 自动生成Model )不一样,具体如下:

Scaffold-DbContext Name=Database Microsoft.EntityFrameworkCore.SqlServer -Force

可以看到,由之前的明文数据连接改成了appsettings.json文件中配置的连接名,Name=后面即为配置的连接名称。

生成的上下文文件的连接也不一样:

以前是:

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer("Data Source=192.168.9.1;Initial Catalog=Test;User ID=sa;Password=123;");
            }
        }

现在是:

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseSqlServer("Name=DatabaseContext");
            }
        }

总结:可以发现对比这两种方式,第二种通过配置文件,进行加解密操作更为安全和实用。

*本文最后修改于:2021-1-19 18:25:8
本文标签: .NET CORE 5 数据库 解决方案
本文由本站原创发布, 本文链接地址:https://outlela.com/Code/103.html
转载或引用请保留地址并注明出处:outlela.com