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);
}