Compartilhar via


Recursos de coluna específicos para o provedor do SQL Server do Entity Framework Core

Essa página detalha as opções de configuração de coluna específicas para o provedor do SQL Server.

Unicode e UTF-8

O SQL Server 2019 introduziu o suporte a UTF-8, que permite armazenar dados UTF-8 em colunas char e varchar, configurando-os com ordenações UTF-8 especiais. O EF Core 7.0 introduziu suporte completo para mapeamento para colunas UTF-8 e também é possível usá-las em versões anteriores do EF, com algumas etapas extras.

O EF Core 7.0 inclui suporte de primeira classe para colunas UTF-8. Para configurá-los, basta configurar o tipo da coluna para char ou varcharespecificar um agrupamento UTF-8 (terminando com _UTF8) e especificar que a coluna deve ser Unicode:

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();
}

Colunas esparsas

Colunas esparsas são colunas comuns que têm um armazenamento otimizado para valores nulos, reduzindo os requisitos de espaço para valores nulos ao custo de mais sobrecarga para recuperar valores não nulos.

Por exemplo, considere uma hierarquia de tipos mapeada por meio da estratégia tabela por hierarquia (TPH). Na TPH, uma única tabela de banco de dados é usada para manter todos os tipos em uma hierarquia. Isso significa que a tabela deve conter colunas para cada propriedade em toda a hierarquia e, para colunas pertencentes a tipos raros, a maioria das linhas conterá um valor nulo para essa coluna. Nesses casos, pode fazer sentido configurar a coluna como esparsa, a fim de reduzir os requisitos de espaço. A decisão de tornar uma coluna esparsa deve ser tomada pelo usuário e depende das expectativas de dados reais na tabela.

Uma coluna pode se tornar esparsa por meio da API fluente:

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

Para obter mais informações sobre colunas esparsas,consulte os documentos do SQL Server.