A blog about software development, DevOps, and delivering value.
The simplicity of Azure Functions makes it tempting to avoid following good design practices like dependency injection. The default project template doesn’t even support it. This may be fine for learning and quick experiments but would be a mistake for production code. Simplicity is not an excuse for bad engineering. Luckily, setting up dependency injection […]
The new Azure.Identity library hit GA this month. I’ve been wanting to modify a lot of our services to use managed identities and this library, through the use of DefaultAzureIdentity, finally streamlines the experience between local development and running in Azure. So far only the most common Azure SDK packages have first-class support for it, […]
Record paging is a really common requirement for APIs that expose a lot of data. Paging in Azure Cosmos DB SQL API is done using continuation tokens. This post demonstrates how to use them to implement a paged API. When querying Cosmos DB through the REST API you can specify a maximum count to return in […]
I’ve been working on a project where we’re migrating a data access layer from an old ORM to Entity Framework Core. The old ORM has some features that EF Core doesn’t support, so I was tasked with seeing if the SQL generation in Entity Framework Core’s SQL Server provider could be extended to support what […]
It’s a good practice to always test your EF migration code when you create a new migration, especially if you are manually tweaking the Up() or Down() code. If that code doesn’t apply the changes properly it could put the database in a bad state and break migrations if you try to run it again. […]
Message handlers are a very powerful yet underutilized part of the ASP.NET Web API framework. In this post, I’ll demonstrate their usefulness in keeping your API clean, maintainable, and testable. Before I get into how to write a message handler you need to know where they fit into the Web API request pipeline and how […]