Klucze (podstawowe)Keys (primary)

Klucz służy jako podstawowy identyfikator unikatowy dla każdego wystąpienia jednostki.A key serves as the primary unique identifier for each entity instance. Korzystając z relacyjnej bazy danych to mapuje do koncepcji klucz podstawowy.When using a relational database this maps to the concept of a primary key. Można również skonfigurować unikatowy identyfikator, który nie jest kluczem podstawowym (zobacz klucze alternatywne Aby uzyskać więcej informacji).You can also configure a unique identifier that is not the primary key (see Alternate Keys for more information).

KonwencjeConventions

Zgodnie z Konwencją, właściwość o nazwie Id lub <type name>Id zostaną skonfigurowane jako klucza jednostki.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; }
}

Adnotacje danychData Annotations

Korzystanie z adnotacji danych, aby skonfigurować jedną właściwość jako klucz jednostki.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; }
}

Interfejs Fluent APIFluent API

Interfejs Fluent API umożliwiają skonfigurowanie jednej właściwości klucza jednostki.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; }
}

Można również skonfigurować wiele właściwości, aby być kluczem jednostki (znanych jako klucz złożony) za pomocą Fluent interfejsu API.You can also use the Fluent API to configure multiple properties to be the key of an entity (known as a composite key). Klucze złożone można skonfigurować tylko przy użyciu interfejsu API Fluent — konwencje nigdy nie skonfiguruje klucz złożony i nie umożliwia adnotacje danych konfiguracji.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; }
}