共用方式為


Microsoft SQL Server EF Core 資料庫提供者

此資料庫提供者可讓 Entity Framework Core 與 Microsoft SQL Server 搭配使用(包括 Azure SQL 和 Azure Synapse Analytics)。 提供者作為 Entity Framework Core 專案的一部分來維護。

Install

安裝 Microsoft.EntityFrameworkCore.SqlServer NuGet 套件

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

使用方式和組態

一旦專案參考 nuget 套件,請設定 EF for SQL Server,如下所示:

public class MyContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("<CONNECTION STRING>");
    }
}

搭配相依性插入使用 EF 時(例如 ASP.NET),請使用下列專案:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));

Compatibility level

您可以選擇性地使用資料庫的相容性層級來設定 EF;較高的相容性層級允許較新的功能,並據以設定EF,使其使用這些功能。 如果您未明確設定相容性層級,則會選擇合理的預設值,而可能無法利用最新的功能。 因此,建議您明確設定您想要擁有的相容性層級。

請注意,這隻涵蓋 EF 本身的相容性層級組態,例如它產生的 SQL,但不會影響實際資料庫中所設定的相容性層級。 裝載於較新版本 SQL Server 的資料庫仍可能設定為較低的相容性層級,導致它們不支援最新的功能,因此您可能需要變更資料庫中的相容性層級。 如需相容性層級的詳細資訊, 請參閱檔

若要設定具有相容性層級的 EF,請使用 UseCompatibilityLevel() 如下:

optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());

Connection resiliency

EF 包含自動重試失敗資料庫命令的功能;如需詳細資訊, 請參閱檔。 使用 UseAzureSqlUseAzureSynapse時,會自動使用這些資料庫特定的適當設定來設定連線恢復功能。 否則,使用 UseSqlServer時,請使用 設定提供者 EnableRetryOnFailure ,如聯機復原檔所示。

在某些情況下, UseSqlServer 可能會在您無法控制的程式碼中呼叫。 從EF 9開始,若要在這類案例中啟用連線復原功能,請事先呼叫 ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) (這不需要 和 UseAzureSqlUseAzureSynapse)。

注意事項和注意事項

  • Microsoft.Data.SqlClient 套件的發布頻率比 EF Core 提供程式庫更高。 如果您想要利用新功能和錯誤修正,您可以將直接套件引用新增至最新版本的 Microsoft.Data.SqlClient。
  • EF SQL Server 提供者會使用 Microsoft.Data.SqlClient,而不是舊版 System.Data.Client;如果您的專案直接相依於 SqlClient,請確定它參考 Microsoft.Data.SqlClient 套件。 如需Microsoft.Data.SqlClient 與 System.Data.SqlClient 之間差異的詳細資訊, 請參閱此部落格文章

支援的資料庫引擎

  • Microsoft SQL Server (2019 及更新版本)
  • Azure SQL Database
  • Azure Synapse Analytics