代替キー (一意制約)Alternate Keys (Unique Constraints)

注意

このセクションの構成は、一般にリレーショナル データベースに適用されます。The configuration in this section is applicable to relational databases in general. ここで示すように拡張メソッドが使用可能になるリレーショナル データベース プロバイダーをインストールするときに (共有のため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).

Unique 制約は、モデル内の代替キーごとに導入されました。A unique constraint is introduced for each alternate key in the model.

規則Conventions

慣例により、インデックスと代替キーの導入された制約の名前は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>. 複合の代替キーの<property name>プロパティ名のアンダー スコアの区切られたリストになります。For composite alternate keys <property name> becomes an underscore separated list of property names.

データの注釈Data Annotations

Unique 制約は、データ注釈を使用していない構成できます。Unique constraints can not be configured using Data Annotations.

Fluent APIFluent API

Fluent API を使用して、代替キーのインデックスと制約名を構成することができます。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; }
}