Typy danychData Types

Uwaga

Konfiguracja opisana w tej sekcji ma zastosowanie do relacyjnych baz danych w zasadzie.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia pokazane staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionego 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 odwołuje 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

Według Konwencji dostawcy bazy danych wybiera typ danych na podstawie typu CLR właściwości.By convention, the database provider selects a data type based on the CLR type of the property. Uwzględnia ona, również inne metadane, takie jak skonfigurowanego maksymalną długość, czy właściwość jest częścią klucza podstawowego, itd.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, oraz 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).

Adnotacji danychData Annotations

Adnotacje danych służy do określenia typu dokładne dane dla kolumny.You can use Data Annotations to specify an exact data type for a column.

Na przykład następujący kod konfiguruje Url jako ciąg z systemem innym niż unicode o maksymalnej długości 200 i Rating dziesiętnego z dokładnością do 5 i skalować 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; }
}

Interfejsu API FluentFluent API

Aby określić ten sam typ danych dla kolumny można również Użyj interfejsu API Fluent.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; }
}