キー (プライマリ)Keys (primary)

キーは、各エンティティ インスタンスの主な一意の識別子として機能します。A key serves as the primary unique identifier for each entity instance. リレーショナル データベースを使用する場合はこれはマップの概念、主キーです。When using a relational database this maps to the concept of a primary key. 主キーではない一意の識別子を構成することもできます (を参照してください代替キー詳細については)。You can also configure a unique identifier that is not the primary key (see Alternate Keys for more information).

規則Conventions

プロパティの名前付け規則、によりIdまたは<type name>Idエンティティのキーとして構成されます。By convention, a property named Id or <type name>Id will be configured as the key of an entity.

class Car
{
    public string Id { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}
class Car
{
    public string CarId { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

データの注釈Data Annotations

データ注釈を使用して、エンティティのキーとして使用する 1 つのプロパティを構成することができます。You can use Data Annotations to configure a single property to be the key of an entity.

class Car
{
    [Key]
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

Fluent APIFluent API

Fluent API を使用して、エンティティのキーとして使用する 1 つのプロパティを構成することができます。You can use the Fluent API to configure a single property to be the key of an entity.

class MyContext : DbContext
{
    public DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => c.LicensePlate);
    }
}

class Car
{
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

(複合キーと呼ばれます)、エンティティのキーとして使用するのに複数のプロパティを構成するのに Fluent API を使用することもできます。You can also use the Fluent API to configure multiple properties to be the key of an entity (known as a composite key). Fluent API を使用して複合キーを構成することができますのみ - 規則が複合キーをセットアップしないといずれかを構成データ注釈を使用できます。Composite keys can only be configured using the Fluent API - conventions will never setup a composite key and you can not use Data Annotations to configure one.

class MyContext : DbContext
{
    public DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => new { c.State, c.LicensePlate });
    }
}

class Car
{
    public string State { get; set; }
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}