Lite.Migrator is a tiny cross-platform SQLite migration framework for .NET applications. This library was built for speed and flexibility so you can quickly stand-up and reliably deliver scalable database solutions.
Use it with your container app or mobile development (.NET MAUI ๐, Avalonia, Uno, etc.) projects.
Lite.Migrator takes a "migrate-up" approach. In most app deployments, we usually move forward and rarely downgrade (consider app stores). This helps keep the library small and nimble. Previously known as, SQLite.Migrator.
Brought to you with nerd-love by Suess Labs, sponsored by Xeno Innovations.
Check out the sample project's source code Lite.Migrator.Sample
| Platform | Status |
|---|---|
| Windows | Yes |
| Linux | Yes |
| Android | Yes |
| iOS | Yes |
Contribute today and get your platform supported ๐
Get Lite.Migrator on NuGet today!
Detailed instructions can be found on the Using Lite.Migrator wiki page.
- Add Lite.Migrator project to your solution
- Create a folder in your solution to hold the scripts
- Add SQL files as Embedded Resources
- You must use the naming convention, "YYYYMMDDhhmm-FileName.sql"
- Wire-up the controller
// 1. Add a few `.sql` files as Embedded Resources to project
// in the namespace `MyProject.Namespace.Scripts`
// 2. Execute the migrates as follows
// This will create the DB in your MAUI app's AppData directory.
var dbPath = Path.Combine(FileSystem.AppDataDirectory, "Lite.Migrator.db3");
var scriptNamespace = "MyProject.Namespace.Scripts";
using var migrator = new Migrator(dbPath, scriptNamespace);
// Install migration scripts
bool isSuccessful = await migrator.MigrateUpAsync(); var dbPath = Path.Combine(FileSystem.AppDataDirectory, "Lite.Migrator.db3");
var scriptNamespace = "MyProject.Namespace.Scripts";
using var migrator = new Migrator(dbPath, scriptNamespace);
// List of all embedded script files
var embeddedMigrations = migrator.Migrations.GetSortedMigrations();
// List of scripts installed
var installed = await migrator.GetInstalledMigrationsAsync();
// List of scripts waiting to be installed
var notInstalled = await migrator.GetMissingMigrationsAsync();
// Install migration scripts
bool isSuccessful = await migrator.MigrateUpAsync();public async Task InstallMigrationsAsync()
{
// Your EXE/DLL with the scripts
var dbPath = @"C:\TEMP\MyDatabase.db3";
var migsNamespace = "MyProjNamespace.Scripts";
var migrator = new Migrator(dbPath, migsNamespace);
bool = success = await migrator.MigrateUpAsync();
// Required after v0.6
migrator.Dispose();
}Give it a test drive and support making Lite.Migrator better :)
- Fork on GitHub
- Create a branch
- Code (and add tests)
- Create a Pull Request (PR) on GitHub
- Target the
developbranch and we'll get it merged up tomaster - Target the
masterbranch for hotfixes
- Target the
- Get the PR merged
- Welcome to our contributors' list!
This project could use your assistance to crush any limitations.
Please visit the Known Limitations wiki page
- Tidy-up namespace formatting
- Update URLs
- MigrationFactory Stores the Supplied Assembly
- Rename main class to Migration
- Default Assembly in CTR to use Calling Assembly
- Updated readme and changelog with the latest notes
- Update Parser to Search Specific Namespace
- Disposable
- Namespace changed from
Xeno.LiteMigratortoLiteMigrator
