Somebody just asked me if I'm releasing a stable version of Simple.Data 2, so it's clearly time for another update.

I haven't done a lot with v2 for a while, and there is a reason for that beyond the usual too busy, too lazy, etc. The whole .NET world has been in chaos (good chaos, but still chaos) for the past year, as we wait for Project K DNX ASP.NET 5 ASP.NET Core. Right now the team are scrambling to rebase ASP.NET Core on top of .NET Core and the dotnet CLI.

Of course, I want Simple.Data 2 to work on .NET Core. I expect all the kinds of people who like things like Simple.Data and Nancy and OWIN to be migrating to Core. Nancy and Simple.Data have always been a good match, and Andreas is now working full time on migrating Nancy to .NET Core; it would be great if Simple.Data was there too. So Simple.Data 2 is going to be:


I've checked over the code and dependencies and everything, and migrating the now-very-large codebase of Simple.Data 1 (OK, 0.19) would be a mammoth task. It does a lot of very complicated things, and it covers a lot of edge cases, and if I try to land on Day One with all those things in place, Day One is going to be years away.

So I'm going to start over, from a blank .NET Core project, and build the thing properly. Where I can, I'll copy and paste code from the 2.0 branch I already started, but at the start, it's going back to the fundamentals: GetByFoo, FindByFoo, Insert, and so on.

I'm also going to build it around a new pipeline architecture from the start, very similar to the OWIN/Katana/ASP.NET Core Startup pipeline. A database request is very similar to an HTTP request, after all: a request (or Command) goes in, and a response (or Result) comes out.

With this model, you'll be able to inject your own functionality, like caching, or SQL Server geo-type handling, or name mapping, or whatever, into the pipeline, just like you can with IApplicationBuilder.

It is my hope that this will allow people to build more complex functionality and plug it in themselves, leaving Simple.Data.Core itself... well... Simpler.

I'll get started as soon as the ASP.NET Core & .NET Core projects stabilise and do another release.


Something very soon, running on CoreCLR, ground-up rewrite, very basic at first but completely extensible too.