Alternativschlüssel (Unique-Einschränkungen)Alternate Keys (Unique Constraints)

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).

Eine unique-Einschränkung wird für jede Alternativschlüssel im Modell eingeführt.A unique constraint is introduced for each alternate key in the model.

KonventionenConventions

Gemäß der Konvention werden die Index- und einschränkungsobjekten, die für einen alternativen Schlüssel eingeführt werden Namen AK_<type name>_<property name>.By convention, the index and constraint that are introduced for an alternate key will be named AK_<type name>_<property name>. Für zusammengesetzte alternativen Schlüssel <property name> wird eine Unterstrich getrennte Liste von Eigenschaftsnamen.For composite alternate keys <property name> becomes an underscore separated list of property names.

DatenanmerkungenData Annotations

Unique-Einschränkungen können nicht mithilfe von Datenanmerkungen konfiguriert werden.Unique constraints can not be configured using Data Annotations.

Fluent-APIFluent API

Sie können die Fluent-API verwenden, so konfigurieren Sie den Index und Namen für einen alternativen Schlüssel.You can use the Fluent API to configure the index and constraint name for an alternate key.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasAlternateKey(c => c.LicensePlate)
            .HasName("AlternateKey_LicensePlate");
    }
}

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