ef连接mysql报root没有权限_EF下使用自定义的connectionString避免数据库密码泄露
在使用EF框架时,缺省情况下数据库访问字串是明码存放在app.config或web.config中的,相当于让数据库裸奔。
实际上EF在创建数据实体时,可以指定连接字串,取代在app.config中读取连接字串的方式,但缺省下并不提供(大硬是不是缺根筋啊)
分析数据实体的构造函数可以看到:
publicUserManageEntities():base("name=UserManageEntities")
{
}
可见实体是通过基类DbContext来创建的,而基类DbContext的构造函数如下:
//
//摘要://可以将给定字符串用作将连接到的数据库的名称或连接字符串来构造一个新的上下文实例。请参见有关这如何用于创建连接的类备注。//
//参数://nameOrConnectionString://数据库名称或连接字符串。
[SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
[SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]public DbContext(string nameOrConnectionString);
Name Or ConnectionString啊大哥,为什么EF实体的构造函数就不能缺省提供一个connectionString的重载呢?
没办法,只好自己动手了。需要两步:
1. 构造EF的连接字串
这里可以采用EntityConnectionStringBuilder来生成
EntityConnectionStringBuilder ecb = newEntityConnectionStringBuilder();
ecb.Metadata= "res://*/UserManage.csdl|res://*/UserManage.ssdl|res://*/UserManage.msl";
ecb.Provider= "System.Data.SqlClient";
ecb.ProviderConnectionString= "data source=(localdb)\\MSSQLLocalDB;initial catalog=UserManage;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";
然后在通过ecb.ConnectionString可以获取到EF的连接字串。
其中MetaData、ProviderConnectionString可以从EF自动生成的连接字串中分析参考拿来用
2.增加实体的的构造函数,让其接受ecb.ConnectionString参数
原构造函数:
publicUserManageEntities():base("name=UserManageEntities")
{
}
这个构造函数的意思是将app.config(或web.config)中,name为UserManageEntities的连接字串取出做为构造函数的参数。
这里增加一个构造函数的重载,接收ecb.ConnectionString参数
public UserManageEntities(stringconnString):base(connString)
{
}
这样,我们在生成实例时,调用我们的新构造函数就可以了:
UserManageEntities db = new UserManageEntities(ecb.ConnectionString);
通过这样处理,我们可以将数据库访问密码封装在程序中,动态生成连接字串,并让EF使用我们的连接字串,以达到保护数据库的目的。
ef连接mysql报root没有权限_EF下使用自定义的connectionString避免数据库密码泄露相关推荐
- ef连接mysql报root没有权限_想要远程连接MySQL,赋予root权限没用啊?一直报语法错误...
weixin_XMan 转载,希望对你有帮助:1. 3306端口是不是没有打开?使用nestat命令查看3306端口状态:~# netstat -an | grep 3306tcp 0 ...
- 连接mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
连接mysql报错:Access denied for user 'root'@'localhost'(using password: YES)的解决方法 参考文章: (1)连接mysql报错:Acc ...
- navicat远程连接mysql报错10038
navicat远程连接mysql报错10038一般由以下两个原因: 一:本地防火墙问题 在本地安装了mysql.navicat并打开了mysql服务的情况下,来设置防火墙. 首先右击或者点击入站规则, ...
- 登录mysql报错2059,navicat连接mysql报错2059如何解决
navicat连接mysql报错2059,如下图所示: 网上查询过后,发现这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密 ...
- 登录mysql报错2059_navicat连接mysql报错2059的解决方法
navicat连接mysql报错2059的解决方法 发布时间:2020-12-21 10:27:37 来源:亿速云 阅读:82 作者:小新 栏目:数据库 这篇文章给大家分享的是有关navicat连接m ...
- myBatis连接MySQL报错误:No operations allowed after conn
为什么80%的码农都做不了架构师?>>> myBatis连接MySQL报错误:No operations allowed after connection closed.Con ...
- python 连接mysql报错:mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_passw
python 连接mysql报错:mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_passw ...
- mysql数据库连接报2059,navicat连接MySQL报2059错误的解决方法
navicat连接MySQL报2059错误的解决方法 发布时间:2020-12-22 14:11:30 来源:亿速云 阅读:77 作者:小新 栏目:数据库 这篇文章将为大家详细讲解有关navicat连 ...
- idea连接MYSQL报错汇总
idea连接MYSQL报错汇总 [The last packet sent successfully to the server was 0 milliseconds ago.The driver h ...
最新文章
- io操作是指什么_各种IO模型,一篇打尽
- javascript权威指南——笔记(第十章:正则)
- Google Research新成果,让表格理解和检索更上一层楼!
- Linux系统文件属性,什么是Linux系统的文件属性?
- mysql中函数大全_MySql 函数大全(一)
- Web 开发的 JavaScript 框架资料收集(15款)
- StringFormate使用
- java只对_只对你情有独钟:写给Java的情诗
- android 车牌识别 开源,在android上的车牌识别
- Ubuntu22.04安装gamit10.71
- 谈 heuristic
- sklearn_scaler
- unity 3d 仿真_在Unity3D中构建3D仿真入门,第1部分
- react 跳转外部链接
- Rap2接口管理工具搭建及版本升级
- 电商时代新一轮用户争夺站,拼的不只是“低价”
- win10无法打开 巫师3 等steam游戏
- 汉堡大学计算机科学,汉堡大学
- 正圆锥体空间方程_电路原理中三相缺相保护器是如何工作的,正负序与它有什么关系...
- 唯美MACD-完全版
热门文章
- FFmpeg命令行(ffmpeg、ffplay、ffprobe)
- dropna()函数如何使用
- NanoHttpd Demo是个好东西
- Hexo博客配置笔记
- 学习使用php实现无限极评论和无限极转二级评论解决方案
- [附源码]Python计算机毕业设计高校社团管理系统Django(程序+LW)
- Fiddler创建根证书不成功和无法找到根证书的解决方法
- TensorFlow Eager 教程(转)
- 桌面计算机里没有桌面显示不出来怎么办,电脑桌面图标不显示怎么设置|恢复电脑桌面图标的方法...
- excel2010设置列宽为像素_Excel2010中调整行高和列宽的方法