It's amazing what a bit of incentive can help you achieve...

I just pushed the first alpha release of Simple.Data 2.0 to NuGet.

This build has most of the async goodness in place. You'll need to await pretty much everything now. Take a look at these tests for the SQL Server adapter to see what that looks like.

First cut of the Metadata API is in too, very basic to start with, just Tables and Columns. I need your feedback on this, so let me know how you'd like it to work and what you need for your applications.

Stuff I broke

This is a huge change from v1, and there's some stuff that doesn't work pending a fairly major round of refactoring, but I'm hoping that most of it is the more advanced stuff so people can work around it.

The most fundamental thing I broke is all the Get methods. These had their own path in v1, but in v2 they're going to be based on SimpleQuery, except they need to go off and find primary key info, so, yeah, it's more complicated. It'll be in alpha2.

Expect some weirdness as we make the journey to asynchronous database access. In particular, the combination of Task and IEnumerable is making my brain hurt; I can return a Task<IEnumerable<T>>, but what you really want to do is await that on each go around the loop, so should it be an IEnumerable<Task<T>>? Probably not, because the foreach on the would suck. I don't know, we'll work it out as we go along.

Anyway, get it, play with it, break it, report issues and put it into production entirely at your own risk; I wouldn't, myself.

Now, if you'll excuse me, Sunset Overdrive awaits.

:-)