Функции столбцов, относящиеся к поставщику SQL Server Entity Framework Core
На этой странице описаны параметры конфигурации столбцов, относящиеся к поставщику SQL Server.
Юникод и UTF-8
В SQL Server 2019 появилась поддержка UTF-8, которая позволяет хранить данные UTF-8 в char
столбцах и varchar
настраивать их с помощью специальных параметров сортировки UTF-8. EF Core 7.0 представила полную поддержку сопоставления столбцов UTF-8, и их можно использовать в предыдущих версиях EF, а также с некоторыми дополнительными шагами.
EF Core 7.0 включает поддержку первого класса для столбцов UTF-8. Чтобы настроить их, просто настройте тип 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.