C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


本文接上一篇:C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型-CSDN博客

一、连接字符串在生成代码里

上一篇我们已经完成了基本操作,但是有一个问题,连接字符串被原样写入了生成的上下文代码里,代码是这样的:

cs 复制代码
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
        => optionsBuilder.UseMySQL("server=???;userid=???;pwd=???;port=3306;database=???;sslmode=none;allowPublicKeyRetrieval=true;");

因为这是不安全的操作,所以代码里面直接给了一个警告,并给了官方指引。

官方建议的方案是用配置参数,但是使用配置参数需要支持配置参数的项目,而我的项目是个类库,并不是asp.net或应用程序,所以不能使用配置参数。

除了安全原因,如果修改了数据库需要重新生成,或者修改了数据库参数,都要修改源代码也是不可接受的,所一定要想办法解决。

二、不生成连接参数

虽然不能使用配置参数,不过仍有解决方案,而且更通用:用-NoOnConfiguring参数来阻止生成这个方法。在命令行最后增加这个参数,生成的代码就不会有上面的这个方法。

仔细对比一下发现,生成的代码不仅没有了OnConfiguring方法,也没有了默认构造函数,从而必须手动提供参数才行,下面是修改后的测试代码:

cs 复制代码
			{
				DbContextOptionsBuilder<库名Context> optionsBuilder =new ();
				optionsBuilder.UseMySQL("server=???;userid=???;pwd=???;port=3306;database=???;sslmode=none;allowPublicKeyRetrieval=true;");
				using var db = new 库名Context(optionsBuilder.Options);
				var records = db.表名;
				foreach (var item in records)
				{
					Log(item.col1);
				}
			}

这个方法提供了完全的自由度。


(这里是文档结束)

相关推荐
小白男神3 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客3 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql