AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

微软推出 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:005156

评论

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

低代码技术在售后管理中的应用与优化

天津汇柏科技有限公司

低代码开发

官宣!2024观测云发布会

观测云

监控

从C端到B端:我的前端技术进阶之路

京东零售技术

前端 企业号2024年7月PK榜

职场<火焰杯>测试开发大赛决赛成绩及获奖名单公布!

测吧(北京)科技有限公司

测试

夏日清凉计划开启,来华为天气领取出行礼包、影音会员等惊喜福利

最新动态

【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题

YashanDB

yashandb 崖山数据库 崖山DB

喜讯!云起无垠入选《嘶吼2024网络安全产业图谱》

云起无垠

观测云产品更新 | 异常追踪、场景图表、快照、监控等

观测云

监控

文献解读-群体测序-第二十三期|《一项前瞻性队列研究中膀胱癌的驱动和乘客DNA甲基化非侵入诊断和监测》

INSVAST

基因测序 基因数据分析 生信服务

仓颉编程语言技术指南:嵌套函数、Lambda 表达式、闭包

华为云开发者联盟

鸿蒙 编程语言 华为云开发者联盟 企业号2024年7月PK榜 仓颉

灵活数据流处理:NeuronEX 支持 JavaScript 自定义函数

EMQ映云科技

Java 车联网 物联网 数据采集 NeuronEX

AI客服上线 干货 干货 全是干货!

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

职场<火焰杯>测试开发大赛决赛成绩及获奖名单公布!

测试人

软件测试

【程序大侠传】全局变量与并发之战

Disaster

观测云:企业级监控的全方位解决方案

可观测技术

监控

京东云原生安全产品重磅发布

京东科技开发者

从积木式到装配式云原生安全

京东科技开发者

一文了解MySQL索引机制

京东零售技术

后端 MySQL 高可用 企业号2024年7月PK榜

LLM推理加速:decode阶段的Attention在GPU上的优化

阿里技术

阿里巴巴 推理 大模型 LLM RTP-LLM

在 K8s 上用 KubeBlocks 提供的 PG 和 Redis operator 部署高可用 Harbor 集群

小猿姐

postgresql Kubernetes operator Redis 消费队列

Milvus 向量数据库进阶系列丨部署形态选型

Zilliz

人工智能 Milvus Zilliz 向量数据库 rag

一步即扫,直达应用所有服务

HarmonyOS SDK

HarmonyOS

从K8s的“临时容器”看K8s设计的厉害之处

华为云开发者联盟

Docker 容器 云原生 华为云开发者联盟 企业号2024年7月PK榜

【论文速读】| Arondight:使用自动生成的多模态越狱提示对大型视觉语言模型进行红队测试

云起无垠

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