Freigeben über


Sequenzen

Hinweis

Sequenzen sind eine Funktion, die normalerweise nur von relationalen Datenbanken unterstützt wird. Wenn Sie eine nicht-relationale Datenbank wie Azure Cosmos DB verwenden, sehen Sie in der Dokumentation Ihrer Datenbank nach, wie Sie eindeutige Werte erzeugen.

Eine Sequenz erzeugt eindeutige, fortlaufende numerische Werte in der Datenbank. Sequenzen sind nicht mit einer bestimmten Tabelle verknüpft und es können mehrere Tabellen eingerichtet werden, die Werte aus derselben Sequenz beziehen.

Grundlegende Verwendung

Sie können eine Sequenz im Modell einrichten und diese dann verwenden, um Werte für Eigenschaften zu erzeugen:

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

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

Beachten Sie, dass das spezifische SQL, das zum Erzeugen eines Wertes aus einer Sequenz verwendet wird, datenbankspezifisch ist. Das obige Beispiel funktioniert auf SQL Server, wird aber auf anderen Datenbanken fehlschlagen. Weitere Informationen finden Sie in der Dokumentation zu Ihrer Datenbank.

Konfigurieren der Sequenzeinstellungen

Sie können auch zusätzliche Aspekte der Sequenz konfigurieren, z. B. ihr Schema, den Startwert, die Schrittweite usw.:

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