Sdílet prostřednictvím


Sekvence

Poznámka

Sekvence jsou funkce, která je obvykle podporována pouze relačními databázemi. Pokud používáte nerelační databázi, jako je Azure Cosmos DB, projděte si dokumentaci k databázi o generování jedinečných hodnot.

Sekvence generuje jedinečné sekvenční číselné hodnoty v databázi. Sekvence nejsou přidružené ke konkrétní tabulce a více tabulek lze nastavit tak, aby nakreslily hodnoty ze stejné sekvence.

Základní použití

V modelu můžete nastavit posloupnost a pak ji použít k vygenerování hodnot pro vlastnosti:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasSequence<int>("OrderNumbers");

    modelBuilder.Entity<Order>()
        .Property(o => o.OrderNo)
        .HasDefaultValueSql("NEXT VALUE FOR OrderNumbers");
}

Všimněte si, že konkrétní SQL použitý k vygenerování hodnoty z posloupnosti je specifický pro databázi; Výše uvedený příklad funguje na SQL Serveru, ale v jiných databázích selže. Další informace najdete v dokumentaci ke konkrétní databázi.

Konfigurace nastavení sekvence

Můžete také nakonfigurovat další aspekty sekvence, jako je jeho schéma, počáteční hodnota, přírůstek atd.:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasSequence<int>("OrderNumbers", schema: "shared")
        .StartsAt(1000)
        .IncrementsBy(5);
}