Partager via


Fonctionnalités de colonne spécifiques au fournisseur SQL Server Entity Framework Core

Cette page détaille les options de configuration de colonne spécifiques au fournisseur SQL Server.

Unicode et UTF-8

SQL Server 2019 a introduit la prise en charge de UTF-8, ce qui permet de stocker des données UTF-8 dans les colonnes char et varchar en les configurant avec des collations UTF-8 spéciales. Vous pouvez utiliser des colonnes UTF-8 avec EF simplement en configurant le type de colonne sur char ou varcharen spécifiant un classement UTF-8 (se terminant par _UTF8) et en spécifiant que la colonne doit être 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();
}

Colonnes éparses

Les colonnes éparses sont des colonnes ordinaires qui ont un stockage optimisé pour les valeurs Null, ce qui réduit les exigences d’espace pour les valeurs Null au coût d’une surcharge supplémentaire pour récupérer des valeurs non null.

Par exemple, considérez une hiérarchie de types mappée via la stratégie TPH (table par hiérarchie). Dans TPH, une table de base de données unique est utilisée pour contenir tous les types d’une hiérarchie ; Cela signifie que la table doit contenir des colonnes pour chaque propriété dans toute la hiérarchie et pour les colonnes appartenant à des types rares, la plupart des lignes contiennent une valeur Null pour cette colonne. Dans ces cas, il peut être judicieux de configurer la colonne comme éparse, afin de réduire les besoins en espace. La décision de prendre une colonne éparse doit être prise par l’utilisateur et dépend des attentes en matière de données réelles dans la table.

Une colonne peut être rendue éparse via l’API Fluent :

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

Pour plus d’informations sur les colonnes éparses, consultez la documentation SQL Server.