Manage Database Upgrades Easily
$ dotnet add package VersionNextVersionNext is a powerful and flexible database upgrade manager for SQL Server. Created by Nick Hadder, this NuGet package simplifies database deployment, version management, and upgrading to the latest development version for seamless development and production workflows.
Install VersionNext via NuGet:
PM> Install-Package VersionNext
Create the initial start of your database VersionStart.
public class InitialDatabaseCreation : Models.VersionStart
{
public InitialDatabaseCreation() : base()
{
AddSqlUpdate("CREATE TABLE [dbo].[InitialTable] (Id INT Identity(1,1) PRIMARY KEY);");
}
}
Create a release version DatabaseVersion.
public class v20250225 : DatabaseVersion
{
public v20250225() : base(2025, 2, 25)
{
AddSqlUpdate("CREATE TABLE [dbo].[TestTable] ([Id] INT PRIMARY KEY);");
AddSqlUpdate("INSERT INTO [dbo].[TestTable] ([Id]) VALUES (1);");
}
}
Create the latest development version of your database VersionNext.
public class InitialDatabaseCreation : Models.VersionNext
{
public class vDevelop : Models.VersionNext
{
public vDevelop() : base()
{
AddSqlUpdate("CREATE TABLE [dbo].[LatestTestTable] ([Id] INT PRIMARY KEY);");
}
}
}
var connectionString = new SqlConnectionStringBuilder()
{
DataSource = "localhost,1433",
InitialCatalog = "MyDatabase",
UserID = "sa",
Password = "YourStrong!Passw0rd",
TrustServerCertificate = true
};
var versions = new List<DatabaseVersion>()
{
new InitialDatabaseCreation(), //initial database creation version (must be first)
new v20250225(), //some released version where database upgrade was needed
new vDevelop() //latest development version, yet to be released (must be last)
};
var database = new Database(connectionString, versions);
var settings = new DatabaseUpgraderSettings()
{
ThrowOnUpgradeFailure = true,
UpgradeVersionStart = true,
UpgradeVersionNext = false,
VersionTableSchema = "dbo",
VersionTableName = "DatabaseVersion",
SqlTimeoutSeconds = 60
};
var upgrader = new DatabaseUpgrader(database, settings);
await upgrader.UpgradeAsync();
var currentVersion = await upgrader.CurrentVersionAsync();
Console.WriteLine($"Database upgraded to version: {currentVersion.FullVersion}");
VersionNext is open-source and licensed under the MIT License.
Nick Hadder - Creator of VersionNext
Contributions are welcome! Feel free to submit issues or pull requests to improve VersionNext.
For questions or feedback, reach out via GitHub Issues.
Happy upgrading! 🚀