データの種類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で有効桁数の 10 進数として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; }
}