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

Uwaga

Ogólnie rzecz biorąc jest odpowiednie dla relacyjnych baz danych konfiguracji w tej sekcji.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia, pokazane tutaj staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionej 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).

Ograniczenia unique został wprowadzony dla każdego klucza alternatywnego w modelu.A unique constraint is introduced for each alternate key in the model.

KonwencjeConventions

Zgodnie z Konwencją, indeksu i ograniczenia, które zostały wprowadzone dla klucza alternatywnego będą miały nazwę nadaną 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>. Klucze alternatywne złożonego <property name> staje się listę nazw właściwości oddzielonych znakiem podkreślenia.For composite alternate keys <property name> becomes an underscore separated list of property names.

Adnotacje danychData Annotations

Nie można skonfigurować ograniczeń UNIQUE przy użyciu adnotacji danych.Unique constraints can not be configured using Data Annotations.

Interfejs Fluent APIFluent API

Interfejs Fluent API umożliwiają skonfigurowanie nazwę indeksu i ograniczenie klucza alternatywnego.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; }
}