Typy danychData Types

Uwaga

Ogólnie rzecz biorąc jest odpowiednie dla relacyjnych baz danych konfiguracji w tej sekcji.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia, pokazane tutaj staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionej Microsoft.EntityFrameworkCore.Relational pakietu).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Typ danych odnosi się do bazy danych określonego typu kolumny, z którą właściwość jest zamapowana.Data type refers to the database specific type of the column to which a property is mapped.

KonwencjeConventions

Zgodnie z Konwencją dostawcy bazy danych wybiera typ danych, w zależności od typu CLR właściwości.By convention, the database provider selects a data type based on the CLR type of the property. On uwzględnia również inne metadane, takie jak skonfigurowanych maksymalną długość, czy właściwość jest częścią klucza podstawowego, itp.It also takes into account other metadata, such as the configured Maximum Length, whether the property is part of a primary key, etc.

Na przykład program SQL Server używa datetime2(7) dla DateTime właściwości, a nvarchar(max) dla string właściwości (lub nvarchar(450) dla string właściwości, które są używane jako klucz).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).

Adnotacje danychData Annotations

Korzystanie z adnotacji danych, aby określić dokładny typ danych dla kolumny.You can use Data Annotations to specify an exact data type for a column.

Na przykład poniższy kod służy do konfigurowania Url jako ciąg znaków innego niż unicode o maksymalnej długości 200 i Rating jako dziesiętna z dokładnością do 5 i skalowanie z 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; }
}

Interfejs Fluent APIFluent API

Można również określić ten sam typ danych dla kolumn za pomocą Fluent interfejsu API.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; }
}