程序一般都离不开数据,要与数据交互离不开数据库连接。
.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"); } }