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 estará disponíveis quando você instala um provedor de banco de dados relacional (devido a compartilhado Microsoft.EntityFrameworkCore.Relational pacote).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 está 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 conta 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 as anotações de dados para especificar um tipo de dados exato de uma coluna.You can use Data Annotations to specify an exact data type for a column.

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