Version 0.4, mid-January

I’ve recently got to do some more work on Simple.Data, and this week I’ll be pushing the 0.4 release to NuGet and OpenWrap. This release adds support for stored procedures, which can be executed by calling them as methods on a Database or Transaction:

var db = Database.Open();
var procedureReturnValue = db.usp_SomethingTheDbaWrote(fromDate: DateTime.Today);

This also adds support for multiple result sets being returned from the procedure. I’m looking into how to handle Output Parameters with some kind of mutable value wrapper, because the dynamic framework doesn’t support ref/out method parameters.

Version 0.6, early February

The next release version will be 0.6, which is going to add support for constructing complex queries with explicit joins, column lists, ordering and grouping and so on. I’m intending the syntax for that to look something like:

var db = Database.Open();
var q = db.Employees.As("Employee").CreateQuery();
q.LeftJoin(db.Employees.As("Manager"), q.Employee.ManagerId == q.Manager.EmployeeId)
    .Select(q.Employee.Name.As("Employee_Name"), q.Manager.Name.As("Manager_Name")
    .OrderBy(q.Employee.StartDate);
var rows = q.Run();

If you’ve got any ideas for improving that syntax, please leave them in the comments. I’m aiming to get 0.6 out in early February.

Version 1.0, late February?

Unless somebody points out a glaring omission, the difference between 0.6 and 1.0 will be bug fixes and performance improvements, plus I’ll also be adding support for SQL Server Compact Edition 4.0 in 1.0 Beta 1. If you don’t need that or the complex query feature, then by all means start using the 0.4 release, which would let you work around that gap with stored procedures anyway.

I’ve also had some people ask about Mono support, and that’s something I intend to support fully for Mono 2.8 and above. If you’d like to contribute towards that goal, then the main thing that will be required is Providers for the AdoAdapter. This works much like the Ruby DataMapper approach, which has an adapter for RDBMS systems which then accepts further plugins for specific databases. Obviously the key providers for non-Windows systems are MySQL, PostGRESQL and Sqlite. So if you fancy working on that, let me know.