Types de donnéesData Types

Note

La configuration de cette section s’applique aux bases de données relationnelles en général.The configuration in this section is applicable to relational databases in general. Les méthodes d’extension indiqués ici devient disponibles lorsque vous installez un fournisseur de base de données relationnelle (en raison de l’élément partagé Microsoft.EntityFrameworkCore.Relational package).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Type de données fait référence au type de base de données de la colonne à laquelle une propriété est mappée.Data type refers to the database specific type of the column to which a property is mapped.

ConventionsConventions

Par convention, le fournisseur de base de données sélectionne un type de données en fonction du type CLR de la propriété.By convention, the database provider selects a data type based on the CLR type of the property. Il prend également en compte d’autres métadonnées, tel que configuré longueur maximale, si la propriété fait partie de clé primaire, etc.It also takes into account other metadata, such as the configured Maximum Length, whether the property is part of a primary key, etc.

Par exemple, SQL Server utilise datetime2(7) pour DateTime propriétés, et nvarchar(max) pour string propriétés (ou nvarchar(450) pour string des propriétés qui sont utilisées en tant que clé).For example, SQL Server uses datetime2(7) for DateTime properties, and nvarchar(max) for string properties (or nvarchar(450) for string properties that are used as a key).

Annotations de donnéesData Annotations

Vous pouvez utiliser des Annotations de données pour spécifier le type de données exact pour une colonne.You can use Data Annotations to specify an exact data type for a column.

Par exemple, le code suivant configure Url sous forme de chaîne non-unicode avec une longueur maximale de 200 et Rating comme decimal avec une précision de 5 et mettre à l’échelle de 2.For example the following code configures Url as a non-unicode string with maximum length of 200 and Rating as decimal with precision of 5 and scale of 2.

public class Blog
{
    public int BlogId { get; set; }
    [Column(TypeName = "varchar(200)")]
    public string Url { get; set; }
    [Column(TypeName = "decimal(5, 2)")]
    public decimal Rating { get; set; }
}

API FluentFluent API

Vous pouvez également utiliser l’API Fluent pour spécifier les mêmes types de données pour les colonnes.You can also use the Fluent API to specify the same data types for the columns.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>(eb =>
        {
            eb.Property(b => b.Url).HasColumnType("varchar(200)");
            eb.Property(b => b.Rating).HasColumnType("decimal(5, 2)");
        });
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public decimal Rating { get; set; }
}