A note about this build log entry: I published this after the week it covers. DevNitro reconstructed a draft from work-related entries in my journal, Git commit history, and time tracking. I reviewed, edited, and approved the final post. The story reflects what I knew and built at the time.

From the Backlog to the Build Log

Week of November 14 - November 20, 2025

What I Worked On

Last week the migration framework learned to upgrade a database that already exists. This week I pushed for the next step: automatic schema migration. Point it at your .sql schema changes, let it detect the difference, and let it generate the migration itself, with no hand-written scripts.

SQL Server got there. It detects a schema change, like adding a column to a table, and produces the migration on its own. I also pulled the CLI options into a Migration Helper class so client projects inherit the behavior instead of repeating the wiring, and added some new assertion methods to GlobalCove.Fluently to cover the new tests.

What the AI Did Well

Refactoring the SchemaComparer architecture and moving it onto an EnvironmentType enum was a clean, well-scoped change the AI handled without much steering. The pattern that keeps earning its keep: I have it write a test that reproduces the exact bug first, watch it fail, then fix it. That is how I closed a Postgres int-to-bool conversion issue, by wrapping the conversion so Postgres stops choking on it.

What Needed Correction

Automatic detection works on SQL Server and not on Postgres or SQLite. That gap cost most of the week. The three databases disagree on enough small things (seeding, syntax, a "near raise" error on Postgres) that one code path does not cover all of them, and I am still closing it.

I hit the honest low point midweek too. I sat there wondering whether to scrap the whole custom migration approach and just use EF Core. I am not there yet, and I will probably offer EF Core as an option later, but building this the hard way is a real cost and I felt it this week.

Then a bug on the live site. Someone commented on my .NET video that they could not join the DevNitro waitlist. I spent most of an evening chasing it and never reproduced it cleanly. My best guess is a cold container losing its database connection on the first request. Deploying reliably is its own problem, and this was a reminder of that.

What Shipped

SQL Server automatic migration detection works end to end. The Migration Helper and CLI options are in, so client sites configure migrations without copy-paste. GlobalCove.Fluently gained new assertion methods. BlankSite is updated to work with the new automigration path. Then I reworked the deploy process, though it surfaced that a database deploy was not forcing the update it should.

The Numbers

Category Hours
Product / Features 41h 39m
Content 14h 45m
Deploy / Infra 4h 36m
Community 0h 29m
Total 61h 29m

Almost everything went into automigration, with the usual content slice on the weekly videos and a few hours on deploy.


Automatic schema migration across three databases looks like one checkbox and turns into a month. SQL Server is done. Postgres and SQLite are teaching me why most tools pick one database and stop.

Curious how this site was built?
Watch the 5-minute walkthrough at devnitro.com →

An AI built this blog (but not this post)

This entire blog system (domain models, database, services, UI, auth, etc.) was built by DevNitro on its own in 95 minutes. I recorded every second.

    We respect your privacy. Unsubscribe at any time.