posted on Thursday, January 18, 2007 9:03 PM
by
thomasswilliams
.NET Code Generation Tools I've Tried
I was asked the other day, given that I have talked about IdeaBlade DevForce on my blog: what other code generators/object-relational mappers had I tried, and why did I eventually choose IdeaBlade?
I thought that might make an interesting blog post and had to go scratching around in my memory back to mid 2004, when I first thought to myself that there *might* be an easier way than writing repetitive routines to return datasets from hand-crafted stored procedures to access 40+ tables and then making the UIs for all of it ;-)
First, here's a brief list of some of the tools I've tried over the years (keep in mind that I should have posted this in 2005; most, if not all of the products I mention below will surely have evolved and improved over time):
- Codus
- RapTier $
- LLBLGen $ - I was probably most impressed with this one, but it looked complicated :-)
- CodeSmith $ - another good looking product but I thought it was overkill for what I needed. I also couldn't find many good, functional templates out of the box.
- ORM.NET - I used this in a project while it was still owned by Olero, but was not completely happy - and when it went open source I kind of thought that it would die...how wrong I was!
- OlyMars - at the time I evaluated it, this product mainly put out C# and had no active community support. I think the last version was old when I started looking.
- WilsonORMapper $
- MyGeneration
I'm not saying any of the above products were bad. I've put comments where I remember, but basically I was looking for the most value out of the smallest investment of my time - time which would include learning a new product.
As far as I can recall, I evaluated the tools with an eye for the following criteria, which I've roughly ordered in terms of my priorities. Points 4 and 5 will tell you a lot about where my head was at with regards to my needs and expectations:
- VB-oriented - or at least not VB-ignoring (at worst, VB-convertible)
- Adequate documentation and samples
- As easy to use as datasets - I like datasets; any new product I found needed to be easily able to replace the datasets in my projects
- I was looking for a product that would allow me to quickly put together an "administration interface" - basically something like MS Access so power users could add, edit and delete reference table data to their heart's content.
- I tended to steer away from tools which generated stored procedures for me - obviously, this had a lot of impact on the tool I chose
- Actively developed & maintained (not a one-off project) - you only have to search CodeProject to find the worn-out shells/interesting ideas of code generation past
- No requirement to buy into product X's way of doing things - at the time, I was just adapting to using the Data Access Application Block. I didn't want another major retro-active change, given that I was in active development.
- I wasn't particularly fussed if the UI was generated for me, especially after seeing the sort of UI that some of the tools generated.
- SQL Server support needs to be top-notch - I don't use Oracle, MySql, etc. so I'd rather have an SQL Server-centric tool that can utilise SQL Server fully, than a generic tool that codes to the lowest common denominator
- Not too expensive. Free is best.
Since then, my list would be expanded to include a .Net 2.0 version and the ability for the tool to easily support flowing through changes in the database to the UI (repeatable generation) without losing business rules or customisations I had done to the classes. Ideablade supports these last two (using partial classes).
After reviewing all of this, it seems fair to ask: did I get what I wanted? I'll have to leave that for another post...
Tags: orm, code generation