このデータベース プロバイダーを使用すると、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 パッケージを参照したら、次のように SQL Server 用に EF を構成します。
public class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("<CONNECTION STRING>");
}
}
依存関係の挿入 (例: ASP.NET) で EF を使用する場合は、次のコマンドを使用します。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));
EF SQL Server プロバイダーは、基になる ADO.NET プロバイダーとして Microsoft.Data.SqlClient を使用します。 SqlClient で受け入れられる接続文字列の詳細については、 このページを参照してください。
互換性レベル
必要に応じて、データベースの互換性レベルで EF を構成できます。互換性レベルが高いほど、新しい機能が可能になり、EF を構成するとそれらの機能が使用されます。 互換性レベルを明示的に構成しない場合は、最新の機能を利用できない可能性がある適切な既定値が選択されます。 そのため、必要な互換性レベルを明示的に構成することをお勧めします。
これは EF 独自の互換性レベルの構成 (生成される SQL など) にのみ適用されますが、実際のデータベースで構成されている互換性レベルには影響しないことに注意してください。 新しいバージョンの SQL Server でホストされているデータベースは、互換性レベルが低く構成されている可能性があるため、最新の機能はサポートされない可能性があるため、データベースの互換性レベルも変更する必要があります。 互換性レベルの詳細については、 ドキュメントを参照してください。
互換性レベルで EF を構成するには、次のように UseCompatibilityLevel() を使用します。
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());
接続の回復性
EF には、失敗したデータベース コマンドを自動的に再試行するための機能が含まれています。詳細については、 ドキュメントを参照してください。 UseAzureSqlとUseAzureSynapseを使用する場合、接続の回復性は、それらのデータベースに固有の適切な設定で自動的に設定されます。 それ以外の場合、 UseSqlServerを使用する場合は、接続の回復性に関するドキュメントに示すように、 EnableRetryOnFailure を使用してプロバイダーを構成します。
場合によっては、制御できないコードで UseSqlServer が呼び出されることがあります。 EF 9 以降では、このようなシナリオで接続の回復性を有効にするには、事前に ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) 呼び出します (これは、 UseAzureSql と UseAzureSynapseでは必要ありません)。
注意事項と留意事項
- Microsoft.Data.SqlClient パッケージは、EF Core プロバイダーよりも頻繁に出荷されます。 新機能とバグ修正を利用する場合は、最新バージョンの Microsoft.Data.SqlClient に直接パッケージ参照を追加できます。
- EF SQL Server プロバイダーは、古い System.Data.Client ではなく Microsoft.Data.SqlClient を使用します。プロジェクトが SqlClient に直接依存関係を持つ場合は、それが Microsoft.Data.SqlClient パッケージを参照していることを確認します。 Microsoft.Data.SqlClient と System.Data.SqlClient の違いの詳細については、 このブログ投稿を参照してください。
サポートされているデータベース エンジン
- Microsoft SQL Server (2019 以降)
- Azure SQL Database
- Azure Synapse Analytics
.NET