代替キー (一意制約)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; }
}