Sequenze

Nota

Le sequenze sono in genere supportate solo dai database relazionali. Se si usa un database non relazionale, ad esempio Cosmos, controllare la documentazione del database per generare valori univoci.

Una sequenza genera valori numerici univoci e sequenziali nel database. Le sequenze non sono associate a una tabella specifica e più tabelle possono essere configurate per disegnare valori dalla stessa sequenza.

Uso di base

È possibile configurare una sequenza nel modello e quindi usarla per generare valori per le proprietà:

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

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

Si noti che l'oggetto SQL specifico usato per generare un valore da una sequenza è specifico del database; l'esempio precedente funziona in SQL Server ma avrà esito negativo su altri database. Per altre informazioni, consultare la documentazione del database specifico.

Configurazione delle impostazioni della sequenza

È anche possibile configurare aspetti aggiuntivi della sequenza, ad esempio lo schema, il valore iniziale, l'incremento e così via:

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