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

news/2024/11/22 2:55:13/

初级代码游戏的专栏介绍与文章目录-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/news/1548922.html

相关文章

Preamble puncture 信号处理技术

Preamble puncture 是一种用于通信系统中的信号处理技术&#xff0c;尤其是在 无线通信 和 5G 网络等系统中使用。它通常用于改善传输效率和减少干扰&#xff0c;尤其是在多用户共享同一频谱资源时。简单来说&#xff0c;preamble puncture 技术可以在特定条件下跳过某些信号序…

如何高效集成YS网店客户和组织映射数据到MongoDB

YS网店与客户/组织映射关系对接MongoDB 在企业信息系统的集成过程中&#xff0c;数据的高效流动和准确映射是至关重要的。本文将分享一个具体的技术案例&#xff1a;如何将YS网店中的客户和组织映射关系数据从用友BIP平台集成到MongoDB数据库中。 用友BIP数据获取与处理 首先…

Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)

0x01 产品简介 PAN-OS 是运行 Palo Alto Networks 下一代防火墙的软件。通过利用 PAN-OS 本机内置的关键技术(App-ID、Content-ID、设备 ID 和用户 ID),可以在任何时间、任何地点完全了解和控制所有用户和设备中正在使用的应用程序。 0x02 漏洞概述 PAN-OS 设备管理 Web …

5. langgraph中的react agent使用 (从零构建一个react agent)

1. 定义 Agent 状态 首先&#xff0c;我们需要定义 Agent 的状态&#xff0c;这包括 Agent 所持有的消息。 from typing import (Annotated,Sequence,TypedDict, ) from langchain_core.messages import BaseMessage from langgraph.graph.message import add_messagesclass …

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (三)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 &#xff08;三&#xff09; 一、前言 目前鸿蒙最新系统&#xff0c;经过测试还有两个BLE相关Bug正在修复&#xff1a; 1.获取本地设备蓝牙名称&#xff0c;会为空&#xff0c;只有点击到设置蓝牙中查看后&#xff0c;该接口才能…

STM32低功耗设计NFC与无线距离感应智能钥匙扣-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 智能钥匙扣作为一种小巧而实用的智能设备&#xff0c;凭借其便携性…

el-table常用知识点1

实现在一个表格某一行数据的上方浮动一个图片 <el-table :data"tableData" borderheight"90%":style"{width: 100%}" ><el-table-column prop"startDate" label"开始日期" align"center"><templa…

【C++进阶实战】打砖块小游戏

游戏规则 玩家控制底部的一个挡板&#xff0c;反弹球击碎上方排列的砖块。如果球掉到底部&#xff0c;则游戏结束。如果所有砖块都被击碎&#xff0c;则玩家胜利。 安装 EasyX 为了更好的视觉效果&#xff0c;我们将使用 EasyX 图形库。EasyX 是一个适用于 Windows 平台的轻…