Поделиться через


Поставщик базы данных MICROSOFT SQL Server EF Core

Этот поставщик базы данных позволяет Entity Framework Core использовать с Microsoft SQL Server (включая AZURE SQL и Azure Synapse Analytics). Поставщик поддерживается в рамках Проекта Entity Framework Core.

Install

Установите пакет NuGet Microsoft.EntityFrameworkCore.SqlServer .

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Использование и настройка

После того как проект ссылается на пакет nuget, настройте EF для 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")));

Поставщик EF SQL Server использует Microsoft.Data.SqlClient в качестве базового поставщика ADO.NET. Дополнительные сведения о строках подключения, принятых 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 использует Microsoft.Data.SqlClient, а не старый System.Data.Client; Если проект принимает прямую зависимость от SqlClient, убедитесь, что он ссылается на пакет Microsoft.Data.SqlClient. Дополнительные сведения о различиях между Microsoft.Data.SqlClient и System.Data.SqlClient см. в этой записи блога.

Поддерживаемые ядра СУБД

  • Microsoft SQL Server (с 2019 и далее)
  • База данных SQL Azure
  • Azure Synapse Analytics