命名Microsoft.Data.SqlClient空间包含支持的 .NET 数据提供者,用于兼容 SQL Server 的数据库。 它最初是从 System.Data.SqlClient 分支而来的,同时保留了人们熟悉的 ADO.NET 编程模型,并且能够独立于 .NET 运行时发布新的 SQL Server 功能。
请使用 Microsoft.Data.SqlClient 进行新开发。
安装并导入命名空间
添加NuGet包:
dotnet add package Microsoft.Data.SqlClient
导入命名空间:
using Microsoft.Data.SqlClient;
大多数应用使用 SqlConnection、 SqlCommand、 SqlParameter、 SqlDataReader和 SqlTransaction。 完整的公开表面,请参见 Microsoft.Data.SqlClient API 参考。
与ADO.NET的关系
Microsoft.Data.SqlClient 实现了来自 System.Data.Common 的与提供程序无关的类型,包括 DbConnection、DbCommand、DbDataReader 和 DbTransaction。 它还提供针对 SQL Server 的专用 API,例如:
SqlBulkCopySqlBatchSqlConnectionStringBuilderSqlConfigurableRetryFactorySqlDependency- SQL Server 专用的认证、加密和数据类型支持
有关选择与提供程序无关的 API 或 SqlClient 特定 API 的指导,请参阅 结合 Microsoft.Data.SqlClient 的 ADO.NET 架构。
与System.Data.SqlClient的关系
System.Data.SqlClient是较早的供应商,提供 .NET 框架和更早的 .NET 版本。
Microsoft.Data.SqlClient 它使用许多相同的类型名称,但包、命名空间、默认值、功能和支持策略不同。
不要在新的申请代码中提及两个提供者。 来自这两个包的同名类型不能互换使用。 例如,一个 System.Data.SqlClient.SqlConnection 不能传递给需要 Microsoft.Data.SqlClient.SqlConnection 的地方。
迁移通常从添加 Microsoft.Data.SqlClient 包和更改命名空间引用开始,但你还必须审查连接加密、参数、配置、传递依赖和运行时行为。 在部署之前,请先按照 从 System.Data.SqlClient 迁移到 Microsoft.Data.SqlClient 进行操作。
版本兼容性
驱动程序包版本独立于应用程序的 .NET 版本和数据库引擎版本。 请查看这三部作品:
| 组件 | 需要验证的内容 |
|---|---|
| Microsoft.Data.SqlClient | 发布行是支持的,包含你的应用所用的功能。 |
| .NET 或 .NET 框架 | 该应用程序的目标运行时由该驱动版本支持。 |
| 兼容SQL Server的数据库 | 驱动版本支持数据库版本,服务器支持任何请求的协议功能,如TDS 8.0。 |
关于当前矩阵,请参见 SqlClient 驱动支持生命周期。
版本特定的更改
驱动程序发布可以添加API、移动可选依赖,并更改安全默认。 每次进行次要更新或重大更新前,都要检查更改。
示例包括:
- 4.0版本默认改
Encrypt为true。 - 5.0 版本引入了用于 TDS 8.0 的
SqlConnectionEncryptOption和Encrypt=Strict。 - 5.2版本引入
SqlBatch于支持的现代.NET目标上。 - 7.0版本将驱动程序提供的Microsoft Entra认证迁移到了
Microsoft.Data.SqlClient.Extensions.Azure。
请参阅 Microsoft.Data.SqlClient 中的新增功能,了解发布说明链接和升级摘要。
相关的命名空间和包
部分功能使用主命名空间外的类型或可选包。
| 命名空间或包 | Purpose |
|---|---|
Microsoft.Data.SqlClient.Server |
SqlDataRecord 和 SqlMetaData 的 SqlClient 实现。 |
Microsoft.Data.SqlTypes |
SqlClient 专有类型,例如 SqlFileStream、SqlJson 和 SqlVector<T>。 |
Microsoft.Data.SqlClient.Diagnostics |
强类型的诊断事件负载。 |
Microsoft.Data.SqlClient.Extensions.Azure |
适用于 7.0 及更高版本的由驱动程序提供的 Microsoft Entra 身份验证 |
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider |
Azure 密钥保管库 与 Always Encrypted 集成。 |
不要仅凭命名空间推断包的需求。 请参照专题文章以及针对所使用驱动程序版本的 NuGet 包依赖信息。