【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

相关文章

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅