O/R mappers and generator
I’ve been doing a moderate amount of research into tools that generate data access layers, entity or object tiers, and other layers for enterprise (or non-enterprise) applications. One of the tools I’ve picked up lately per some encouragement from a coworker is LLBLGen Pro. One can download a demo at the LLBLGen site to try out.
LLBLGen Pro is claimed as the #1 O/R Mapper (I’m not sure this is true, I haven’t seen sales statistics) for the data-access tier in .NET. The tool can be used against Access, PostgreSQL, Oracle, mySQL, DB2, and of course SQL Server 7.0 or greater. At the same time support is given to the databases, the code generated is independent of the specific database, and for type differences (such as Oracle’s lack of a Boolean type) type converters can be created.
The tool also creates typed lists for entity fields based on one to one, one to many, or many to one relationships. LLBLGen Pro will also create typed views one one to one mappings, support existing stored procedures with wrapper code which enables a single line of code for calling. The tool also will accept templates for other peripheral code generation as needed. For more information on the features, hit the LLBLGen Features List. For tutorials, videos, and samples check out the tutorials page.
As my ranting has ensued about non-use of code generation, the LLBLGen site lays out the facts right on the main page. LLBLGen Pro (or really, ANY code generator) will save a huge portion of a project’s development time. The site puts the number at 50%, I’d put it even higher with a high confidence on my proclamation. As I’ve often complained about the endless boiler plate code, this tool easily replaces greater than 90% of that, the rest easily removed by good use of object oriented pattern based design practices.
The tool swings in at a relatively cheap 229.99 Euro starting price, which as of this date translates to $308.57.
Next I will probably toss in some reviews of .NET Tiers, NHibernate, and other such tools just for good measure.