Sequences
The Sequence class in Weasel.SqlServer manages SQL Server sequences with support for delta detection and ownership.
Defining a Sequence
cs
// Simple sequence starting at 1
var seq = new Sequence("dbo.order_seq");
// Sequence with a custom start value
var seq2 = new Sequence(
DbObjectName.Parse(SqlServerProvider.Instance, "dbo.invoice_seq"),
startWith: 1000
);Sequence Ownership
A sequence can be associated with a table column:
cs
seq.Owner = DbObjectName.Parse(SqlServerProvider.Instance, "dbo.orders");
seq.OwnerColumn = "id";Using Sequences with Table Columns
Set a column's default value from a sequence:
cs
var table = new Table("dbo.orders");
var seq = new Sequence("dbo.order_seq");
table.AddColumn<long>("id").AsPrimaryKey()
.DefaultValueFromSequence(seq);This generates: DEFAULT next value for dbo.order_seq.
Generating DDL
cs
var migrator = new SqlServerMigrator();
var writer = new StringWriter();
seq.WriteCreateStatement(migrator, writer);
// Output: CREATE SEQUENCE dbo.order_seq START WITH 1;
seq.WriteDropStatement(migrator, writer);
// Output: DROP SEQUENCE IF EXISTS dbo.order_seq;Delta Detection
Sequences are checked for existence in sys.sequences:
cs
await using var conn = new SqlConnection(connectionString);
await conn.OpenAsync();
var delta = await seq.FindDeltaAsync(conn);
// delta.Difference: None or Create