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

Hinweis

Die Konfiguration in diesem Abschnitt gilt allgemein für relationale Datenbanken.The configuration in this section is applicable to relational databases in general. Die hier gezeigten Erweiterungsmethoden werden verfügbar, wenn Sie einen relationalen Datenbankanbieter installieren (aufgrund des gemeinsam genutzten Pakets 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).

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

KonventionenConventions

Gemäß der Konvention, den Index und die Einschränkung, 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 getrennt 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 die Index- und einschränkungsobjekten 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; }
}