Compartir a través de


Características de columna específicas del proveedor de SQL Server de Entity Framework Core

En esta página se detallan las opciones de configuración de columna específicas del proveedor de SQL Server.

Unicode y UTF-8

SQL Server 2019 introdujo compatibilidad con UTF-8 , que permite almacenar datos UTF-8 en char y varchar columnas configurándolos con intercalaciones UTF-8 especiales. Puede usar columnas UTF-8 con EF simplemente configurando el tipo de columna en char o varchar, especificando una intercalación UTF-8 (que termina con _UTF8) y especificando que la columna debe 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();
}

Columnas dispersas

Las columnas dispersas son columnas normales que tienen un almacenamiento optimizado para valores NULL, lo que reduce los requisitos de espacio para los valores NULL a costa de más sobrecarga para recuperar valores que no son NULL.

Por ejemplo, considere la posibilidad de asignar una jerarquía de tipos a través de la estrategia de tabla por jerarquía (TPH). En TPH, se usa una tabla de base de datos única para contener todos los tipos de una jerarquía; esto significa que la tabla debe contener columnas para cada propiedad de toda la jerarquía, y para las columnas que pertenecen a tipos poco frecuentes, la mayoría de las filas contendrán un valor NULL para esa columna. En estos casos, puede tener sentido configurar la columna como dispersa, con el fin de reducir los requisitos de espacio. El usuario debe decidir si hacer que una columna sea dispersa, lo cual depende de las expectativas para los datos reales en la tabla.

Una columna se puede hacer dispersa a través de fluent API:

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

Para obtener más información sobre las columnas dispersas, consulte la documentación de SQL Server.