【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析

2024-08-25 22:08

本文主要是介绍【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导读:上篇博客中介绍了ADO生成串的前一部分,本篇博客结合报错,接着介绍剩下的部分。

 

一、代码展示

 

<span style="font-family:KaiTi_GB2312;font-size:18px;"> <connectionStrings><add name="TestCrateDatabaseEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=myname;initial catalog=mydatabase;persist security info=True;user id=sa;password=mypassword;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings></span>

 

 

 

二、代码分析

 

2.1,provider=System.Data.SqlClient;

数据库驱动,在这段代码中,使用的是SQL Server的数据库服务器驱动。如果将来换库,比如换成MySQL,那么对应的这一个变量,也应该换成MySQL的驱动。

首先是下载驱动程序集,然后添加引用,最后更改连接字符串。

 

2.2,provider connection string

 

数据库连接串,切库的时候,关键替换这一条字符串。

data source:数据源,可以是数据库服务器的IP地址,也可以是名称,如果是本地的话,可以通过local和. 来代替。

initial catalog:将要连接的数据库名称。

persist security info:是否保存安全信息,比如,是否保存数据库密码,true为保存,false为不保存。

Integrated Security:集成安全,为true,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码,从一定程度上说提高了安全性。当为false时,才使用连接串中的user id 和password连接数据库。当为SSP(SSPI是Security Support Provider Interface:Microsoft安全支持提供器接口)I时,同样表示用window身份验证。注:默认值为false。

MultipleActiveResultSets:指定多活动的结果集是否与指定的链接相互关联;类型是bool类型;true代表与指定的链接关联;false代表与指定的链接不关联;默认值是false。解释一下,比如说有一个程序叫做 测试系统,当我们每打开一次测试系统进行数据操作的时候,都会连接一次对应的数据库。然后我再接着打开,再打开一个,再打开一个,就会连接很多次。如果将这个属性值设为false,那么不管我打开多少个测试系统,始终都只会有一个用户和数据库连接。

App=EntityFramework:使用EntityFramework的方式连接数据库操作。

 

2.3,providerName="System.Data.EntityClient"

 

使用的驱动名称(这里我们用的是DBfirst,使用的是EF实体模型,所以驱动是System.Data.EntityClient)。注意:在数据库连接字符串中也有一个provider,provider存在于数据库连接串中,指的是数据库的驱动。而这个providerName是并列于name、connectionString的,它们不在一个层级上。

 

三、报错分析和注意事项

3.1,Integrated Security的值无效。

但是我是配置的Integrated Security的属性为true,但是我的数据库却又是需要SQL 登录验证的,所以这两个之间相冲突。需要更改Integrated Security属性或者将数据库的验证方式改为window验证。

3.2,不支持关键字MultipleActiveResultSets

这个问题是在拼接的过程中报的错,是由于在紧接前面的数据库名称的时候,没有分号空格,它将数据库名称和这个属性值混合为了一体,所以出现了不支持关键字。

3.3,拼接的时候,注意引号

 

前面说过,在这一整个拼接串中,有3个并列部分,一个是Entity的name,一个是entity的连接信息connectionString,另外一个是EF的驱动。而在provider connection string中,数据库连接串,以及后面的MultipleActiveResultSets属性和APP属性是一个整体,如果不用引号标记,就会出错。

 

四、总结

在拼接字符串的过程中,还出了很多错,这段经历真的是让人醉了。我也想不明白当时怎么就接下了切库的活儿,真的是痛并快乐着。切库至今都没有出来,还是比较丢人的。

这条字符串拼接至今都在报错,还有一个错至今未解决。但是,当时我成功过,那么我坚信,未来的我也可以成功。我可以成功一次,我就可以成功无数次。

这篇关于【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106781

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳