データ型Data Types

注意

このセクションの構成は、一般にリレーショナル データベースに適用されます。The configuration in this section is applicable to relational databases in general. ここで示すように拡張メソッドが使用可能になるリレーショナル データベース プロバイダーをインストールするときに (共有のためMicrosoft.EntityFrameworkCore.Relationalパッケージ)。The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

データ型は、データベースの特定の種類のプロパティがマップされている列を参照します。Data type refers to the database specific type of the column to which a property is mapped.

規則Conventions

慣例により、データベース プロバイダーは、プロパティの CLR 型に基づいたデータ型を選択します。By convention, the database provider selects a data type based on the CLR type of the property. アカウントにもかかるなど、構成されたその他のメタデータ最大長プロパティが主キーなどの一部であるかどうか、します。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 を使用してdatetime2(7)DateTimeプロパティ、およびnvarchar(max)stringプロパティ (またはnvarchar(450)stringキーとして使用されるプロパティ)。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).

データの注釈Data Annotations

データ注釈を使用して、正確なデータ型の列を指定することができます。You can use Data Annotations to specify an exact data type for a column.

たとえば、次のコード構成Urlの最大長を持つ非 unicode 文字列として200Ratingの有効桁数と小数点5の拡大/縮小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

Fluent 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; }
}