Contoso University Examples with CQRS, MediatR, AutoMapper and more

I was a bit surprised yesterday to see Scott Hanselman's post on my Contoso University sample app. That application basically takes the traditional Contoso University sample applications (of which there have been many), and try to adapt it to how our "normal" ASP.NET applications are built. Mainly these applications serve as working examples for our own internal teams, so that when we spin up a new application, we have [Read More]

How Respawn Works

This post is mainly a reminder to myself when inevitably I forget what I was doing when designing Respawn. The general problem space is something I've covered quite a lot, but I haven't really walked through how Respawn works internally. The general problem is trying to find the correct order of deletion for tables when you have foreign key constraints. You can do something like: ALTER TABLE [Orders] NOCHECK CONSTRAINT [Read More]

Respawn 3.0 Released

Respawn, the intelligent database deleter, reached the 3.0 milestone today. In this release, Respawn now supports complex circular/cyclical relationships. When Respawn detects a cycle in the graph, it substitutes a separate deletion strategy by disabling/enabling foreign key constraints just for those tables affected. This release also adds support for Oracle, and drops support for SQL Server CE, bringing the supported databases to: SQL Server PostgreSQL MySQL/MariaDB [Read More]

Respawn 2.0 released

A small release for Respawn but there's a breaking change in the underlying extension API, hence the major version bump. A couple things added here: Support for MySQL Support for Amazon RDS (from a bug fixed) The API change was added so that database adapters can specify the quote character to use. With this, we now have 4 databases supported: MS SQL Server MS SQL Server Compact Edition PostgreSQL MySQL [Read More]

MediatR 4.0 Released

The last major release of MediatR brought a simplification in design. Instead of having several different IRequest types and IRequestHandler implementations with several flavors, MediatR would try at runtime to determine how a single IRequest should resolve to different IRequestHandler implementations (synchronous, async, async with a cancellation token). In practice, this proved problematic as not all containers support this sort of 'try-resolve' behavior. MediatR relied on try...catch to resolve, [Read More]