Udostępnij za pośrednictwem


Sekwencje

Uwaga

Sekwencje są zwykle obsługiwane tylko przez relacyjne bazy danych. Jeśli używasz nierelacyjnej bazy danych, takiej jak Azure Cosmos DB, zapoznaj się z dokumentacją bazy danych dotyczącą generowania unikatowych wartości.

Sekwencja generuje unikatowe, sekwencyjne wartości liczbowe w bazie danych. Sekwencje nie są skojarzone z określoną tabelą, a można skonfigurować wiele tabel w celu rysowania wartości z tej samej sekwencji.

Podstawowy sposób użycia

Możesz skonfigurować sekwencję w modelu, a następnie użyć jej do wygenerowania wartości właściwości:

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

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

Należy pamiętać, że określony język SQL używany do generowania wartości z sekwencji jest specyficzny dla bazy danych; powyższy przykład działa w programie SQL Server, ale w innych bazach danych zakończy się niepowodzeniem. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją określonej bazy danych.

Konfigurowanie ustawień sekwencji

Można również skonfigurować dodatkowe aspekty sekwencji, takie jak jego schemat, wartość początkowa, przyrost itp.:

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