Klucze alternatywne (ograniczenia Unique)Alternate Keys (Unique Constraints)

Uwaga

Konfiguracja opisana w tej sekcji ma zastosowanie do relacyjnych baz danych w zasadzie.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia pokazane staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionego Microsoft.EntityFrameworkCore.Relational pakietu).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Wprowadzono unikatowego ograniczenia dla każdego alternatywnego klucza w modelu.A unique constraint is introduced for each alternate key in the model.

KonwencjeConventions

Według Konwencji, będzie miała nazwę indeksu i ograniczenia, które zostały wprowadzone dla klucza alternatywnego 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>. Złożonych kluczy alternatywnych <property name> staje się podkreślenia oddzielone listę nazw właściwości.For composite alternate keys <property name> becomes an underscore separated list of property names.

Adnotacji danychData Annotations

Unikalne ograniczenia nie można skonfigurować za pomocą adnotacji danych.Unique constraints can not be configured using Data Annotations.

Interfejsu API FluentFluent API

Aby skonfigurować nazwę indeksu i ograniczenie klucza alternatywnego, można użyć interfejsu API Fluent.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; }
}