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

ops/2024/12/24 11:11:30/

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

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

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

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


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

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

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

    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方法,也没有了默认构造函数,从而必须手动提供参数才行,下面是修改后的测试代码:

			{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);}}

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


(这里是文档结束)


http://www.ppmy.cn/ops/144554.html

相关文章

医院药学的创新引擎:ChatGPT的应用与思考

《医院药学的创新引擎&#xff1a;ChatGPT的应用与思考》是北京友谊医院药剂科李新刚教授于近日发表的一篇综述文章&#xff0c;探讨了人工智能大语言模型ChatGPT在医院药学领域的应用前景和挑战。 文章主要论述了&#xff1a; ChatGPT在医院药学日常工作中的应用&#xff1a;…

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…

Jmeter对图片验证码的处理【超详细】

Jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

0101多级nginx代理websocket配置-nginx-web服务器

1. 前言 项目一些信息需要通过站内信主动推动给用户&#xff0c;使用websocket。web服务器选用nginx&#xff0c;但是域名是以前通过阿里云申请的&#xff0c;解析ip也是阿里云的服务器&#xff0c;甲方不希望更换域名。新的系统需要部署在内网服务器&#xff0c;简单拓扑图如…

C语言指针与数组深入剖析及优化示例 指针解读 数组与指针的关系

说明&#xff1a; 这是个人对该在Linux平台上的C语言学习网站笨办法学C上的每一个练习章节附加题的解析和回答 ex14&#xff1a; 重新编写这些函数&#xff0c;使它们的数量减少。比如&#xff0c;你真的需要can_print_it吗&#xff1f; if(isalpha(ch) || isblank(ch)) {p…

Matlab个性化绘图第6期—带标记面的三维折线图

带标记面的三维折线图本质上就是多组折线图&#xff1a; Matlab论文插图绘制模板第92期—折线图&#xff08;Plot&#xff09; 或者三维折线图&#xff1a; Matlab论文插图绘制模板第37期—三维折线图(plot3) 不同之处在于带标记面的三维折线图把每一组数据单独放在一个三维平…

【多模态聚类】用于无标记视频自监督学习的多模态聚类网络

Multimodal Clustering Networks for Self-supervised Learning from Unlabeled Videos 用于无标记视频自监督学习的多模态聚类网络 0.论文摘要 多模态自监督学习越来越受到关注&#xff0c;因为它不仅允许在没有人工监督的情况下训练大型网络&#xff0c;还允许跨各种模态搜索…

致命错误: Class ‘ZipArchive‘ not found

银河麒麟V10处理 本人在安装过程遇到的坑&#xff0c;就是不要使用太低版本的 1、安装cmake 确认是否安装 cmake --version 如果没安装的话按照如下步骤处理下&#xff08;如果想要其他版本点击cmake官网下载&#xff09; wget https://github.com/Kitware/CMake/release…