html5微信网站模板,网站开发好难呀,上海泵阀网站建设,网站做seo需要哪些准备背景在 .NET 创建之初#xff0c;System.Data 框架是一个重要的组件。它为创建 .NET 数据库驱动程序提供了一种方式#xff0c;类似 Visual Basic 的 ActiveX Data Objects。虽然 API 不一样#xff0c;但重用了它的名称#xff0c;所以才有了 ADO .NET 这个绰号。ADO 和 A… 背景在 .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 缺少某些加密依赖项。