背景

在 .NET 创建之初,System.Data 框架是一个重要的组件。它为创建 .NET 数据库驱动程序提供了一种方式,类似 Visual Basic 的 ActiveX Data Objects。虽然 API 不一样,但重用了它的名称,所以才有了 ADO .NET 这个绰号。

ADO 和 ADO .NET(即 System.Data)之间的一个关键区别是对象模型。在 ADO 中,通常只需要使用 Connection 、 Command 和 Recordset 对象,OleDB/ODBC 驱动程序隐藏掉了其他东西。这提高了代码复用率,但开发人员难以将一些数据库特性暴露出来。

在 ADO .NET 中,你也可以使用 OleDB/ODBC,但在大多数情况下会使用一系列特定于数据库的类。这些类派生自 DBConnection、DBCommand 和 DBDataReader,可以保持原来的代码复用性。但因为它们是强命名类型,需要显式地作为 .NET 库的一部分。

可能是为了简化开发,SQL Server、OleDB 和 ODBC 驱动程序同时作为 System.Data 框架的一部分。这种方式在当时是可以接受的,但却给现在的 SQL Server 开发周期带来了问题。

实际上,SQL Server 的发布周期已经从 3 年到 5 年变成了几乎每年一次。发布的新版本通常需要更新 .NET 驱动程序,如果它被绑定到 .NET 标准发布周期中,这就不可能及时发布。

第一步是拆分 System.Data 库。.NET Core 完成了这一步,为每个数据库驱动程序提供了单独的库。下一步是将 SQL Server 驱动程序与 .NET Core/Standard 完全分离。为此,他们创建了 Microsoft.Data.SqlClient。

升级到 Microsoft.Data.SqlClient

对于大多数开发人员来说,使用 Microsoft.Data.SqlClient 将会变得非常简单,只需要修改每个类顶部的 using 语句即可。另外,它使用了相同的类名和 API,并提供了大致相同的特性。

对于轻量级 ORM,如 Dapper 或 RepoDB,不需要做进一步的改动。

如果开发人员使用 ORM 来管理连接(例如 EF、NHibernate),就需要等待 ORM 升级。

比较麻烦的是那些混合 ORM。如果一个 ORM 使用了 Microsoft.Data.SqlClient,而另一个使用了 System.Data.SqlClient,就不能同时正常运行。这在使用共享 SqlTransaction 对象时尤为重要。

可用性

1.0 版 Microsoft.Data.SqlClient 可用于这些平台:

  • .NET Framework 4.6+

  • .NET Core 2.1+

  • .NET Standard 2.0+

已知问题

并不是每个人都需要马上升级。文档中指出了这些已知问题:

  • 用户数据类型(UDT)可能无法与 Microsoft.Data.SqlClient 一起使用。

  • Azure Key Vault 和 Microsoft.Data.SqlClient 没有密钥存储。

  • Microsoft.Data.SqlClient 不支持安全飞地的 Always Encrypted。

  • 只有 .NET Framework 和 .NET Core 支持 Always Encrypted, .NET Standard 不支持,因为 .NET Standard 缺少某些加密依赖项。

创建data_微软推出 Microsoft.Data.SqlClient,替代 System.Data.SqlClient相关推荐

  1. 微软推出 Microsoft.Data.SqlClient,替代 System.Data.SqlClient

    背景 在 .NET 创建之初,System.Data 框架是一个重要的组件.它为创建 .NET 数据库驱动程序提供了一种方式,类似 Visual Basic 的 ActiveX Data Object ...

  2. 微软推出 Microsoft Build of OpenJDK 预览版!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 前天美国最高法院刚裁定谷歌在 Android 系统中使用的 Java API 代码合理,第二天微软就发布了 Microsoft Buil ...

  3. 错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制...

    new DataRow 的方式: DataTable pDataTable = new DataTable();DataRow pRow = new DataRow(); 正确的方式: DataRow ...

  4. System.Data.SQLite 与 Microsoft.Data.Sqlite

    在 2005 年,Robert Simpson 创建了System.Data.SQLite,这是 ADO.NET 2.0 的一个 SQLite 提供程序. 在 2010 年,SQLite 团队接管了项 ...

  5. 20130620-异常详细信息: System.Data.SqlClient.SqlException: 用户 'PC-LIXIANG\ASPNET' 登录失败。

    这个问题是由于验证模式引起的,SQL SERVER 2000中,选择混合模式为好.数据库的连接符串要指明验证模式.这个问题baidu一下一大堆. //************************* ...

  6. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别...

    ODP.NET: 引用: using Oracle.DataAccess; //Oracle g 11.2.0 using Oracle.DataAccess.Client; using Oracle ...

  7. C#:System.Data.Common命名空间(数据库抽象工厂的使用)

    代码 ///在使用本例之前要先手动引用system.configration组件,然后建立config文件,config文件名为当前程序文件名的后面加.config比如:a.exe.config us ...

  8. .NET Core 3.0:System.Data的变化

    System.Data虽然不引人关注,但在.NET中,System.Data对于各种关系数据库的连接是非常重要的.System.Data也被称为ADO.NET,其前身是ActiveX Data Obj ...

  9. C# 错误 175: 具有固定名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载

    进入C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config找到machine.config 在configuration -> system ...

最新文章

  1. Linux 下磁盘配额(RHEL5)
  2. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件
  3. python中for循环语句格式_关于Python中的for循环控制语句
  4. HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
  5. Flex通过Blazeds利用Remoteservice与后台java消息推送
  6. 线性表--链式实现方式
  7. Unity WebGL自带VideoPlayer播放视频
  8. 气象数据产品下载网址汇总
  9. python计算圆周率_Python圆周率计算
  10. The server encountered an unexpected condition that prevented it from fulfilling the request.(解决思路)
  11. 移动用户体验设计:iOS APP体验设计
  12. 10019---层次选择器
  13. IntelliJ IDEA设置方法注释模板并解决入参和返回值为空问题
  14. 如果机器可以深度学习,人类的学习有何意义
  15. mbedtls 安装与使用
  16. [Unity插件]物体轮廓特效HighlightPlus
  17. Windows 7下硬盘安装Ubuntu 14.04图文教程
  18. IP广播分控隐私政策
  19. JNI 之Java和c/c++交互,提升Java变成效率
  20. excel怎样把一列中有相同的数据编同一个序号,不同商品的序号要递增

热门文章

  1. HTML5 服务器推送事件(Server-sent Events)实战开发
  2. SBO系统中销售订单日志的跟踪统计思路分析
  3. SAP主数据与业务数据的一致性问题
  4. 使用AT SELECTION-SCREEN事件验证用户输入条件的反思
  5. 这些你耳熟能详的“外国名牌”,其实都是中国的
  6. 首款鸿蒙系统终端n,首款搭载华为鸿蒙系统终端来了!荣耀智慧屏正式发布,3799元起售...
  7. 江苏省计算机一级在线考试,2020江苏省一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...
  8. 计算机C语言1000-1099,歷届重庆市计算机二级C语言考试试题及答案.doc
  9. php入门时间,PHP入门(8)日期和时间
  10. 关于fflush(stderr);