译 | 介绍全新 Microsoft.Data.SqlClient


原文:Diego

翻译:Edi Wang

本文由 SqlClient 和 SQL 服务器工具上的项目经理 Vicky Harp 撰写。

那些一直密切关注 .NET 开发的人很可能看到 Scott Hunter 的最新博客文章,即《.NET Core 是 .NET 的未来》。.NET Framework 将重点转向稳定性,新功能开发转移到 .NET Core 意味着 SQL Server 需要更改,以便继续以我们及时为 .NET 开发人员提供最新的 SQL 功能,就像过去那样。

System.Data.SqlClient 是用于访问 SQL 服务器或 Azure SQL 数据库ADO.NET提供程序。从历史上看,SQL 在 .NET Framework 中使用 System.Data.SqlClient 作为客户端开发的起点,来验证我们新的 SQL 功能,然后再将这些设计应用到其他驱动程序。我们仍然希望继续这样做,但与此同时,这些相同的新功能也应该在 .NET Core 中提供。

现在,我们有两个代码库和两种不同的 SqlClient 交付到应用程序的方式。在 .NET Framework 中,不同版本会全局安装在 Windows 中。在 .NET Core 中,应用程序可以选择特定的 SqlClient 版本并随应用程序一起发布。如果 SqlClient 交付的 .NET Core 模型也适用于 .NET Framework,这不失为一件好事。

我们不能只提供一个新的包来取代System.Data.SqlClient。这将与现在 .NET Framework 中的内容冲突。这就把我们带到了我们选择的解决方案...

Microsoft.Data.SqlClient


Microsoft.Data.SqlClient 包现在在 NuGet 上提供预览,将成为 SQL Server 的旗舰数据访问驱动程序。

此新包同时支持 .NET Core 和 .NET Framework。在新的命名空间中创建新的 SqlClient 允许旧 System.Data.SqlClient 和新的 Microsoft.Data.SqlClient 并共存。虽然不是自动的,但应用程序有一个相当简单的迁移路径,可以从旧版迁移到新版。只需添加对 Microsoft.Data.SqlClient 的 NuGet 依赖项,并更新引用位置的代码即可。

为了配合我们在这个新模型中加速功能交付的计划,我们很高兴在 .NET Framework 和 .NET Core 上提供对两个新的 SQL Server 功能的支持,以及错误修复和性能改进:

  • 数据分类 – 自 CTP 2.0 以来,在 Azure SQL 数据库和 Microsoft SQL Server 2019 中可用。

  • UTF-8 支持 – 自 CTP 2.3 以来,在 Microsoft SQL Server SQL Server 2019 中可用。

同样,我们更新了提供程序的 .NET Core 版本,其中支持让人久等的 Always Encrypted (始终加密),也包括对 Enclaves (安全区)的支持:

  • 在 Microsoft SQL Server 2016 及更高版本中,Always Encrypted 可用。

  • 微软 SQL Server 2019 CTP 2.0 中引入了 Enclave 支持。

新包中的二进制文件基于 .NET Core 和 .NET Framework 中 System.Data.SqlClient 的相同代码 。这意味着包中有多个二进制文件。除了支持不同操作系统所需的不同二进制文件外,在定位 .NET Framework 时,与以 .NET Core 为目标时,还有不同的二进制文件。幕后没有神奇的代码合并:我们仍然有来自 .NET Framework 和 .NET Core 的不同代码库(目前)。这也意味着,在 SqlClient 面向 .NET Framework 和面向 .NET Core 的 SqlClient 上,我们仍然有不同的功能支持。如果要从 .NET Framework 迁移到 .NET Core,但由于 .NET Core 还不支持某些功能(除了 Always Encrypted),那么第一个预览版本可能不会更改这个现状。但我们的首要任务是使所有功能跨这些目标框架。

640?wx_fmt=gif

Microsoft.Data.SqlClient 路线图

我们的路线图是,更频繁地针对 .NET Core 实现并发布新功能。长期目标是单个代码库。随着时间的推移,我们将达成这一目标,但当前需要的是 .NET Core 上的 SqlClient 中的功能支持,因此这正是我们关注的。同时仍然能够向 .NET Framework 应用程序提供新的 SQL 功能。

功能路线图

.NET Core 的 Azure Active Directory 认证提供程序

Active Directory 密码

托管服务身份

Active Directory 整合

工程路线图

合并 .NET Framework 及 .NET Core 代码库

将程序集开源

迁移到GitHub

虽然我们没有上述功能的日期,但我们的目标是在整个 2019 年发布多个版本。我们预计 Microsoft.Data.SqlClient 在 SQL Server 2019 和 .NET Core 3.0 的 RTM 版本发布之前的某个时候从预览版迁移到正式版本。

640?wx_fmt=gif

System.Data.SqlClient 将何去何从

这意味着发展重点已经改变。我们无意很快放弃对 System.Data.SqlClient 的支持。它将保持原样,我们将在出现重要的 Bug 和安全问题时修复它们。如果你有一个不使用任何最新SQL功能的典型应用程序,那么你仍然可以有一个稳定和可靠的 System.Data.SqlClient 用很多年。

然而,Microsoft.Data.SqlClient 将是我们今后实现新功能的唯一地方。我们鼓励您评估您的需求,并选择合适的时间将应用程序或库从 System.Data.SqlClient 迁移到 Microsoft.Data.SqlClient。

结尾

请安装 Microsoft.Data.SqlClient 包来尝试预览版。我们想听听你的声音!尽管尚未完成发布源代码的准备,但您已经可以使用 https://github.com/dotnet/SqlClient  的问题跟踪器来报告任何问题。

请记住,ORM框架 (如 EF Core、EF 6 或 Dapper) 和其他非 微软官方库尚未过渡到新提供程序,因此无法通过这些库中的任何一个使用新功能。支持 Microsoft.Data.SqlClient 的 EF Core 的更新版本预计将在即将发布的预览版中推出。

我们还鼓励您访问 GitHub 仓库中的常见问题和发行说明页面。它们包含有关可用功能、如何入门以及我们发布的计划的其他信息。

640?wx_fmt=gif

本文由 SqlClient 和 SQL 服务器工具上的项目经理 Vicky Harp 撰写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下Jenkins与GitHub自动构建NetCore与部署

今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。1.Linux环境在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证…

容器化之后如何节省云端成本?(二十七)

如何节约云端成本?上云在大部分情况下就是为了降低成本,在这方面,主流的容器服务基本上都能够有效地降低成本——不仅能够高效自动化的管理和控制容器,极大地降低了DevOps的维护成本,而且不需支付Kubernetes Master节点…

2020牛客多校第1场I-1 or 2一般图最大匹配带花树

链接:https://ac.nowcoder.com/acm/contest/5666/I Bobo has a graph with n vertices and m edges where the i-th edge is between the vertices ai​ and bi​. Find out whether is possible for him to choose some of the edges such that the i-th vertex is…

Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色

传送门 文章目录题意:思路:题意: 给你个不规则的网络格子,有nnn列,每列有aia_iai​个格子,让你将121212的多米诺骨牌无重叠的放进去,问最多能放多少个。 思路: 首先如果点数小的话…

Network 黑暗爆炸 - 3732 倍增lca || Kruskal重构树

传送门 文章目录题意:思路:题意: 思路: 两点间最长边最小值一定是最小生成树上两点间的最大值,这个比较容易证,就不多说了。 知道这个结论后, 我们直接跑一个KruskalKruskalKruskal建树&#x…

Manacher入门

写在前面 manachermanachermanacher比想象中好理解得多 至少它给了我学习字符串的信心 能干啥 manachermanachermanacher,中文马拉车(您别说,这名字还挺形象),主要用于计算字符串每一个位置为对称中心的回文串长度&a…

HDU.6761.Minimum Index(Lyndon分解)

题目大意&#xff1a;给一个字符串&#xff0c;求字符串的所有前缀的最小后缀&#xff1b; 思路&#xff1a;主要还是要理解Lyndon串的算法的整一个过程 参考&#xff1a;搬运来自 #include <iostream> #include <cstdio> #include <fstream> #include <…

C#规范整理·异常与自定义异常

这里会列举在C#中处理CLR异常方面的规范&#xff0c;帮助大家构建和开发一个运行良好和可靠的应用系统。前言迄今为止&#xff0c;CLR异常机制让人关注最多的一点就是“效率”问题。其实&#xff0c;这里存在认识上的误区&#xff0c;因为正常控制流程下的代码运行并不会出现问…

C#中await/async闲说

自从C#5.0增加异步编程之后&#xff0c;异步编程越来越简单&#xff0c;async和await用的地方越来越多&#xff0c;越来越好用&#xff0c;只要用异步的地方都是一连串的异步&#xff0c;如果想要异步编程的时候&#xff0c;需要从底层开始编写&#xff0c;这样后边使用的时候就…

Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑到最大面积是由四种颜色构成的&#xff0c;且四种颜色可以从中心扩展出去&#xff0c;所以我们分别维护四种颜色的二维前缀和&#xff0c;O(1)O(1)O(1)计算矩阵内颜色的个数。现在我们…

Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 由于是按层来的&#xff0c;所以我们肯定先按照层来分组。 定义dp[i]dp[i]dp[i]为红棋在位置iii的时候的最大得分和。 先考虑不换的情况&#xff0c;我们对于每个点都从他的父节点转移过来…

用 docker-compose 启动 WebApi 和 SQL Server

本系列文章所要做出的演示架构基于 .NET Core Web Api、MSSQL、Skywalking 和 nginx &#xff0c;这些都会通过docker-compose一键创建/启动容器&#xff0c;然后用 Azure DevOps 发布上线。所以本系列文章重点并不是如何写好.NET Core&#xff0c;而是围绕着 .NET Core 的容器…

你可以保持沉默,但你所说的一切都将成为呈堂证供——浅谈Azure WORM保护

本文作者|Yuan Han本文来源|Reid爸的菜园子美国安然事件后&#xff0c;电子数据的合规性保存越来越受到重视&#xff1b;各国政府制定了一系列的法律&#xff0c;如美国《赛班斯法案》等&#xff0c;对于不同类型的电子数据保留期限做了严格规定&#xff1b;国内也没落后&#…

后缀自动机:从入门到放弃

写在前面 后缀自动机&#xff0c;简称SAMSAMSAM,是一种十分优秀的字符串匹(shu)配(ju)算(jie)法(gou) 字符串界的bossbossboss&#xff0c;几乎可以解决全部正常的字符串题目 至少我前前后后学了一年&#xff0c;听过444次课&#xff0c;几度怀疑自己不适合oioioi 请做好心…

2021牛客第一场 K.Knowledge Test about Match

https://ac.nowcoder.com/acm/contest/11166/K 题意就是使得图中的那个式子最小&#xff0c;你的答案不一定是要最标准的&#xff0c;只要平均水平下和标准值的偏差不超过4%就行了。 有了这个提示&#xff0c;那我们直接贪心瞎搞就行了&#xff0c;只有符合换过去的收益的增大…

Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 比如下面这个图&#xff1a; 思路&#xff1a; 对于这个题&#xff0c;比较容易就能考虑到dpdpdp&#xff0c;设f[i][j]f[i][j]f[i][j]为到了第iii行&#xff0c;覆盖了[j,jk−1][j,jk-1][j,jk−1]范围时候…

设计模式之总体介绍

1. 背景与介绍设计模式是经过反复使用、经过分类的代码总结。设计模式的目的是提高代码可重用性和可靠性&#xff0c;并使代码条理清晰、易于理解、易于维护。设计模式描述了在各种情况下&#xff0c;要选择什么样的方案来解决问题。设计模式通常以类和对象来描述其中的关系和相…

回文自动机:从入门到只会打板

写在前面 如果你会SAMSAMSAM&#xff0c;相信回文自动机不会难懂。 如果你不会&#xff0c;你可以参考我的上一篇文章。 至少回文自动机是治愈系的吧。 作用 回文自动机&#xff0c;也叫回文树&#xff0c;简称PAMPAMPAM实际上它既不是自动机也不是树 处理回文串的有力工…

2021牛客第一场 I. Increasing Subsequence-前缀和优化dp

https://ac.nowcoder.com/acm/contest/11166/I 思路&#xff1a;dp[i][j] 是表示上上步走在i点&#xff0c;上一步走在j点的期望。首先我们很容易想到n^3的做法&#xff0c;那我们必须考虑去优化一维的时间复杂度。我们可以考虑使用前缀和优化dp转移。 我们枚举i点&#xff0c…

Codeforces Round #620 (Div. 2) E. 1-Trees and Queries 思维 + LCA

传送门 文章目录题意思路&#xff1a;题意 思路&#xff1a; 照例&#xff0c;先考虑不加边怎么做。由于可以经过重复的边或点&#xff0c;设aaa与bbb之间长度为lenlenlen&#xff0c;那么需要len<klen<klen<k并且还需要(k−len)mod20(k-len) \bmod 20(k−len)mod20&…