写点什么

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

评论

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

如何在Confluence上设置到期日提醒?Confluence到期日提醒插件重要更新发布,优化表格提醒,增加屏蔽提醒功能

龙智—DevSecOps解决方案

confluence插件

openGauss数据库在CentOS上的安装实践

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

聊聊低代码的本质,是应用开发的未来吗?

高端章鱼哥

低代码 应用开发 JNPF

【墨菲安全实验室】Microsoft Exchange Server 远程代码执行漏洞(CVE-2023-38182)

墨菲安全

网络安全 安全 漏洞 Microsoft Exchange

【墨菲安全实验室】Microsoft Office Visio 远程执行代码漏洞(CVE-2023-36865)

墨菲安全

网络安全 安全 漏洞 Microsoft Office Visio

ISO 21434解析:汽车软件开发者的合规实践与指南

龙智—DevSecOps解决方案

汽车电子

KeyShot 2023.2 Pro for mac(3D渲染和动画制作软件) v12.1.1.12激活版

mac

苹果mac Windows软件 KeyShot Pro 动画软件

网易云信回声消除量化评估方法

网易智企

回声消除 音视频通话

科兴未来|奖金共计1550万元!“苏颂杯”未来产业技术创新赛

科兴未来News

嵌入式软件开发为什么需要DevOps?

DevOps和数字孪生

DevOps 嵌入式软件

PP-ChatOCR:基于文心大模型的通用图像关键信息抽取利器,开发提效 50%!

飞桨PaddlePaddle

人工智能 百度飞桨

TypeChat全面指南:从核心概念到使用

星辰编程理财

AIGC AI编程 typechat

强劲实力闪耀榜单,智领云连续四年入选“中国大数据50强”

智领云科技

云原生大数据平台 智领云 云原生K8s大数据平台 大数据产业生态大会

值得收藏!堪称神器的30个插件

Finovy Cloud

插件 渲染 建模 maya 3d建模

OpenHarmony携千行百业创新成果亮相HDC.Together 2023

OpenHarmony开发者

OpenHarmony

〔支付接入〕微信的 h5 支付和 jsapi 支付

极客飞兔

微信支付 支付 经验分享 H5支付 jsapi支付

百度、NVIDIA、Intel……各大厂商集结,共话文心与飞桨共享生态下的大模型训推部署创新实践计划

飞桨PaddlePaddle

人工智能 百度飞桨 硬件生态 WAVE SUMMIT

14个前端开发者应该知道的实用网站

高端章鱼哥

前端 提高效率 前端开发工具

【墨菲安全实验室】Zoom Desktop Client for Windows <5.14.5 权限升级漏洞(CVE-2023-36541)

墨菲安全

网络安全 安全 Zoom 漏洞 墨菲安全

【低代码预研】通过低代码平台开发应用程序

互联网工科生

软件开发 低代码 应用开发 JNPF

大型集团公司如何打破“信息孤岛”问题?

优秀

打破信息孤岛 消除信息孤岛 信息孤岛

【墨菲安全实验室】WPS Office 存在代码执行漏洞

墨菲安全

网络安全 安全 漏洞 WPS Office

【墨菲安全实验室】Microsoft Teams 远程代码执行漏洞 (CVE-2023-29330)

墨菲安全

安全 漏洞 网络安全、 Microsoft Teams

电动汽车安全概述

DevOps和数字孪生

电动汽车 汽车安全

【华秋干货铺】电源PCB设计汇总

华秋电子

成都Go面试这么卷?卷王介绍:游戏行业 3年经验 20k+

王中阳Go

Go golang 面试题 面经 算法题

【墨菲安全实验室】Apache Traffic Server Range 标头验证不当(CVE-2023-33934)

墨菲安全

Apache 网络安全 安全

龙智Atlassian认证专家、Perforce技术专家将于ACT汽车电子与软件技术周带来主题演讲,分享嵌入式开发中的最佳实践与工具链构建

龙智—DevSecOps解决方案

汽车电子 ACT汽车电子与软件技术周

确保数据一致性:单一可信数据源(SSOT)的概念与5个应用示例

龙智—DevSecOps解决方案

ssot single source

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