Microsoft SQL Server EF Core 数据库提供程序

此数据库提供程序允许将 Entity Framework Core 与 Microsoft SQL Server(包括 Azure SQL 和 Azure Synapse Analytics)一起使用。 该提供程序作为 Entity Framework Core 项目的组成部分进行维护。

安装

安装 Microsoft.EntityFrameworkCore.SqlServer NuGet 包

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

说明

提供程序引用 Microsoft.Data.SqlClient(而不是 System.Data.SqlClient)。 如果项目直接依赖于 SqlClient,请确保它引用 Microsoft.Data.SqlClient 包。

提示

Microsoft.Data.SqlClient 包的交付频率高于 EF Core 提供程序。 若要利用新功能和 bug 修复,可以向最新版本的 Microsoft.Data.SqlClient 添加直接包引用。

警告

遗憾的是,Microsoft.Data.SqlClient 的异步实现存在一些已知问题(例如 #593#601等)。 如果看到意外的性能问题,请尝试改用同步命令执行,尤其是在处理大型文本或二进制值时。

用法

从 EF 9 开始,建议使用 UseAzureSqlUseAzureSynapse 来明确指定连接到 Azure SQL 或 Azure Synapse Analytics,并使用 UseSqlServer 指定连接到本地 SQL Server;这样,提供程序可以针对这些平台进行优化并提供适当的支持。 还建议使用 UseCompatibilityLevel 方法指定兼容性级别,以便生成的 SQL 兼容和/或使用最新的可能功能。

说明

EF Core 9.0 中引入了 UseAzureSql 和 UseAzureSynapse 方法。

EnableRetryOnFailureByDefault

EF 9 引入了 EnableRetryOnFailureByDefault 方法,该方法将上下文配置为默认执行策略,除非它进行了显式配置(如在使用 DI 时)。 若要使用它,只需调用 ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) ,稍后即可像往常一样使用 UseSqlServer 。 如果使用UseAzureSqlUseAzureSynapse,则不需要调用EnableRetryOnFailureByDefault,因为它们已经启用了默认的执行策略。

支持的数据库引擎

  • Microsoft SQL Server (2012 及更高版本)
  • Azure SQL
  • Azure Synapse Analytics