AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

  • 2019-10-22
  • 本文字数:1118 字

    阅读完需:约 4 分钟

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

背景

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


ADO 和 ADO .NET(即 System.Data)之间的一个关键区别是对象模型。在 ADO 中,通常只需要使用ConnectionCommandRecordset对象,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 缺少某些加密依赖项。


更多信息请参见Microsoft.Data.SqlClient FAQ


原文链接


Introducing Microsoft.Data.SqlClient


2019-10-22 08:004505

评论

发布
暂无评论
发现更多内容

微信业务架构图

kylexy_0817

#架构实战营

开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验

汀丶人工智能

人工智能 自然语言处理 nlp 对话机器人 智能对话

对话文本数据的珍贵贡献:训练大模型赋予智能与情感理解

来自四九城儿

一键式文本纠错工具,整合了BERT、ERNIE等多种模型,让您立即享受纠错的便利和效果

汀丶人工智能

人工智能 自然语言处理 文本纠错

Docker容器相关命令指南。

百度搜索:蓝易云

Docker 云计算 Linux 运维 命令

16. 练习:万年历

茶桁

Python 练习

工赋开发者社区 | 主数据管理体系建设与问题分析

工赋开发者社区

想要“收听”物联网/工业物联网专题干货?CommunityOverCode Asia 各票种 Pick 指南!

Apache IoTDB

linux系统服务器,nginx日志切割保存教程。

百度搜索:蓝易云

nginx 云计算 Linux 运维 logrotate

Nginx 安装与部署

timerring

nginx

文心一言 VS 讯飞星火 VS chatgpt (75)-- 算法导论7.2 4题

福大大架构师每日一题

ChatGPT 福大大架构师每日一题

前端新手必读:IndexedDB全面指北

星辰编程理财

数据库 前端 indexedDB 浏览器存储

C++语法中bitset位图介绍及模拟实现

梦笔生花

读:《Google软件工程》 之 “软件工程”

术子米德

软件工程

Jump Desktop 8 for Mac(远程桌面连接软件) 8.9.23中文版

mac

苹果mac Windows软件 Jump Desktop 远程桌面连接软件

代码随想录Day42 - 动态规划(四)

jjn0703

强化服务韧性:ChaosBlade磁盘故障模拟的原理与应用

柠檬汁Code(binbin0325)

混沌工程 系统调用 磁盘故障 Chaos 故障模拟

浅谈中小企业为何做不好自媒体营销

石头IT视角

如何通过Python将JSON格式文件导入redis?

百度搜索:蓝易云

Python json redis Linux 运维

读:《Google软件工程》 之 “度量工程”

术子米德

软件工程

SpringBoot3集成Quartz

Java 架构 springboot quartz SpringBoot3

DxO PhotoLab for mac(raw图像后期处理工具) 5.13.1.95中文版

mac

raw图片处理软件 苹果mac Windows软件 DxO PhotoLab 5

千帆大模型平台的海量 Prompt 模板库,带来了什么?

梦想橡皮擦

千帆大模型平台

15. 系统内置模块

茶桁

Python 模块

对话文本数据是培养大模型的智能与交流之源

来自四九城儿

Boxy SVG for Mac(矢量图编辑器) 4.5.1中文版

mac

苹果mac Windows软件 Boxy SVG 矢量图形编辑软件

企业数字化转型的四个“有为”与六个“数字化

工赋开发者社区

Python 使用ConfigParser操作ini配置文件教程。

百度搜索:蓝易云

云计算 Linux 运维 ConfigParser INI

ProsperEx 的野望:借势 RWA 浪潮,构建全新的链上衍生品体系

股市老人

基于smardaten无代码开发智能巡检系统,让无人机飞得更准

海拥(haiyong.site)

全球劳动力革命,Papaya Global 打破薪资界限

CnosDB

Papaya Global 劳动力革命

微软推出Microsoft.Data.SqlClient,替代System.Data.SqlClient_语言 & 开发_Jonathan Allen_InfoQ精选文章