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


Функции столбцов, относящиеся к поставщику SQL Server Entity Framework Core

На этой странице описаны параметры конфигурации столбцов, относящиеся к поставщику SQL Server.

Юникод и UTF-8

В SQL Server 2019 появилась поддержка UTF-8 , которая позволяет хранить данные UTF-8 в char столбцах и varchar настраивать их с помощью специальных параметров сортировки UTF-8. Столбцы UTF-8 можно использовать с EF, просто настроив тип char столбца или varcharукажите параметры сортировки UTF-8 (в конце _UTF8) и указав, что столбец должен быть Юникодом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property(b => b.Name)
        .HasColumnType("varchar(max)")
        .UseCollation("LATIN1_GENERAL_100_CI_AS_SC_UTF8")
        .IsUnicode();
}

Разреженные столбцы

Разреженные столбцы — это обычные столбцы, которые имеют оптимизированное хранилище для NULL-значений, уменьшая требования к пространству для NULL-значений за счет увеличения расходов на извлечение значений, отличных от NULL.

В качестве примера рассмотрим иерархию типов, сопоставленную с использованием стратегии одной таблицы на иерархию (TPH). В TPH одна таблица базы данных используется для хранения всех типов в иерархии; Это означает, что таблица должна содержать столбцы для каждого и каждого свойства во всей иерархии, а для столбцов, принадлежащих редким типам, большинство строк будет содержать значение NULL для этого столбца. В таких случаях может потребоваться настроить столбец как разреженный, чтобы уменьшить требования к пространству. Решение о том, делать ли столбец разреженным, должно приниматься пользователем и зависит от ожиданий относительно фактических данных в таблице.

Столбец можно сделать разреженным с помощью API Fluent:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<RareBlog>()
        .Property(b => b.RareProperty)
        .IsSparse();
}

Дополнительные сведения о разреженных столбцах см. в документации ПО SQL Server.