什么原因得白癜风的 https://m.39.net/pf/a_4992915.html本课程是《ADO.NET深入编程》的第1单元,共3节内容,主要讲解了什么是ADO.NET,ADO.NET在.NET开发中的作用是什么,以及ADO.NET与C#和SQLServer数据库之间的关系如何。
01第1节.理解ADO.NET
ADO.NET是一个COM组件库,全称是ActiveXDataObjects,后来在ADO后面添加了.NET(ADO.NET)是因为微软主推的开发技术就是.NET命名的,所以是为了让开发者在.NET编程中使用ADO.NET作为数据库的访问技术。
我们知道,C#只是一门高级编程语言,而SQLServer只是一种用于存储数据的数据库管理系统,二都是没有任何关系的。
但是,我们使用C#这门语言开发的应用程序都存在数据存储的问题,这就需要C#与SQLServer数据库之间建立联系,将C#处理后的数据存放在SQLServer数据库中,或者从数据库中获取数据,此时,ADO.NET就出现了。
ADO.NET是美国微软公司发布的在C#语言中访问数据库的一种方式。
图1
从图1中,我们得知,C#与SQLServer是不能直接连接的,因此,需要借助于ADO.NET技术实现二者的之间的连接。
ADO.NET是C#和数据库之间的桥梁,数据库可以是SQLServer、Oracle等。
在.NET开发中,不管是B/S结构的,还是C/S结构的,ADO.NET技术是与数据库打交道的首选,即使使用了ORM工具,如EFCore、Sqlsugar、Dapper、Nhibernate、FreeSql等,其底层的构建都是基于ADO.NET技术实现的。
02第2节.ADO.NET程序集
2.1.System.Data.SqlClient
对于C#来说,至于能与哪个数据库相连,则要看ADO.NET所支持的数据库类型有哪些,不管怎样,ADO.NET肯定是支持SQLServer数据库的。
在.NETFramework年代,ADO.NET操作SQLServer数据库是在System.Data.SqlClient程序集中提供的,后来微软发布了.NETCore跨平台框架,将System.Data.SqlClient移植到了.NETCore中。
下图是在.NETCore中看到的System.Data.SqlClient程序集中提供的SqlConnection类:
图2
System.Data.SqlClient命名空间是在.NETFramework时代用于SQLServer的.NET数据提供程序。
2.2.Microsoft.Data.SqlClient
早期,SQLServer、OleDb和ODBC的驱动程序是作为System.Data框架的一部分在的。
对于微软来说,SQLServer产品的迭代更新是3-5年一次,每次发布新版本时,都要更新.NET驱动程序(也就是更新System.Data),但是它被绑定到了.NET标准发布周期中,此时,SQLServer新产品就不能及时发布。
于是,在.NETCore中,已经将SQLServer、OleDB和ODBC的驱动程序从System.Data中剥离出来,为每个数据库驱动程序提供了单独的程序包,都可以通过NuGet管理器下载。
这也是微软推崇最小化API的例子。
图3
在图3中找到了System.Data.OleDb独立程序包。
这样剥离出来之后,通过NuGet下载,将程序集变成了可插拔的形式,按需加载程序集让开发出来的程序变的更轻和精简。
但是,对于SQLServer的驱动程序来说,还是与.NETCore绑定在一起的。
于是,微软的做法是将SQLServer的驱动程序从.NETCore和.NETStandard完全分离,于是就有了Microsoft.Data.SqlClient。
图4
Microsoft.Data.SqlClient程序集是未来微软主推的ADO.NET操作SQLServer数据库程序集。
未来微软的核心程序集都是以Microsoft开头的。
新开的.NETCore项目,大家就要使用Microsoft.Data.SqlClient程序集来操作SQLServer数据库。
Microsoft.Data.SqlClient在.NETFramework和.NETCore项目中都可以使用。
在Microsoft.Data.SqlClient最新版本中,微软全面新增了基于任务(Task)的异步操作,这就使得ADO.NET在运行效率上更上一层楼。