DatentypenData Types

Hinweis

Die Konfiguration in diesem Abschnitt ist im Allgemeinen gilt für relationale Datenbanken.The configuration in this section is applicable to relational databases in general. Die Erweiterungsmethoden, die hier gezeigten werden verfügbar, wenn Sie einen relationale Datenbank-Anbieter installieren (aufgrund der freigegebenen Microsoft.EntityFrameworkCore.Relational Paket).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Datentyp bezieht sich auf den bestimmten Datenbanktyp der Spalte, die eine Eigenschaft zugeordnet ist.Data type refers to the database specific type of the column to which a property is mapped.

KonventionenConventions

Gemäß der Konvention wählt der Datenbankanbieter einen Datentyp, der basierend auf den CLR-Typ der Eigenschaft.By convention, the database provider selects a data type based on the CLR type of the property. Außerdem akzeptiert es berücksichtigt andere Metadaten, wie z. B. die konfigurierte Maximallänge, ob die Eigenschaft Teil einer primary key-, usw. ist.It also takes into account other metadata, such as the configured Maximum Length, whether the property is part of a primary key, etc.

SQL Server verwendet z. B. datetime2(7) für DateTime Eigenschaften und nvarchar(max) für string Eigenschaften (oder nvarchar(450) für string Eigenschaften, die als Schlüssel verwendet werden).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).

DatenanmerkungenData Annotations

Sie können Datenanmerkungen verwenden, einen genauer Datentyp für eine Spalte angeben.You can use Data Annotations to specify an exact data type for a column.

Der folgende Code z. B. konfiguriert Url als nicht-Unicode-Zeichenfolge mit maximal 200 und Rating als Dezimalzahl mit einer Genauigkeit von 5 und Skalieren von 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; }
}

Fluent-APIFluent API

Die Fluent-API können auch die gleichen Datentypen für die Spalten angeben.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; }
}