Partager via


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

Cette page décrit les options de configuration de colonnes qui sont spécifiques au fournisseur SQL Server.

Unicode et UTF-8

SQL Server 2019 a introduit la prise en charge UTF-8 introduit qui permet le stockage de données UTF-8 dans des colonnes char et varchar en les configurant avec des classements UTF-8 spéciaux. EF Core 7.0 a introduit une prise en charge complète pour le mappage vers des colonnes UTF-8 et il est également possible de les utiliser dans des versions EF précédentes avec quelques étapes supplémentaires.

EF Core 7.0 inclut une prise en charge de première classe pour des colonnes UTF-8. Pour les configurer, configurez simplement le type de colonne sur char ou varchar, spécifiez une collation UTF-8 (se terminant par _UTF8) et spécifiez 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 des valeurs nulles, ce qui réduit la configuration d’espace requise pour des valeurs nulles au prix d’une surcharge plus importante pour récupérer des valeurs non nulles.

Comme exemple, envisagez une hiérarchie de type mappée via la stratégie de table par hiérarchie (TPH). Dans la TPH, une table de base de données unique est utilisée pour conserver tous les types dans une hiérarchie. Cela signifie que la table doit contenir des colonnes pour chaque propriété dans la hiérarchie complète et, pour des colonnes appartenant à des types rares, la plupart des lignes contiennent une valeur nulle pour cette colonne. Dans ces cas, il est logique de configurer la colonne comme éparse afin de réduire la configuration d’espace requise. La décision de rendre une colonne éparse doit être prise par l’utilisateur et dépend des attentes pour les 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 obtenir plus d’informations sur les colonnes éparses, consultez la documentation sur SQL Server.