Tipos de DadosData Types

Observação

A configuração nesta seção é aplicável a bancos de dados relacionais em geral.The configuration in this section is applicable to relational databases in general. Os métodos de extensão mostrados aqui ficarão disponíveis quando você instalar um provedor de banco de dados relacional (devido ao pacote Microsoft.EntityFrameworkCore.Relational compartilhado).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Tipo de dados refere-se para o tipo específico de banco de dados da coluna à qual uma propriedade é mapeada.Data type refers to the database specific type of the column to which a property is mapped.

ConvençõesConventions

Por convenção, o provedor de banco de dados seleciona um tipo de dados com base no tipo CLR da propriedade.By convention, the database provider selects a data type based on the CLR type of the property. Ele também leva em consideração outros metadados, como configurado comprimento máximo, se a propriedade é parte de uma chave primária, etc.It also takes into account other metadata, such as the configured Maximum Length, whether the property is part of a primary key, etc.

Por exemplo, o SQL Server usa datetime2(7) para DateTime propriedades, e nvarchar(max) para string propriedades (ou nvarchar(450) para string propriedades que são usadas como uma chave).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).

Anotações de dadosData Annotations

Você pode usar anotações de dados para especificar um tipo de dados exato para uma coluna.You can use Data Annotations to specify an exact data type for a column.

Por exemplo o código a seguir configura Url como uma cadeia de caracteres com comprimento máximo de não-unicode 200 e Rating como decimal com precisão de 5 e dimensionar 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 fluenteFluent API

Você também pode usar a API Fluent para especificar os mesmos tipos de dados para as colunas.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; }
}