Class Libraries and Applications
TierDeveloper will produce class libraries for any objects you've mapped. It will alsooptionallyproduce Windows Forms, ASP.NET Web Forms, Web services, or remoting sample applications using your mappings. This is an important distinction because while TierDeveloper produces good and usable class libraries, I wasn't nearly as impressed by the generated sample applications that hosted them. For example, the generated Windows Forms application failed to update the currently displayed record if it couldn't find a match in the database, and the ASP.NET application generated non-fatal (but annoying) script errors whenever it tried to retrieve anything. Accordingly, while I'd unhesitatingly recommend TierDeveloper for its O/R capabilities, I'd also recommend that you avoid relying on the generated applications and develop your own applications around the class libraries from scratch; TierDeveloper's various "Application" projects do not add value, and are likely to cause you frustration.
The Market for O/R Tools
I'm generally sympathetic to the idea of code templates to facilitate rapid prototyping, but the biggest problem I have with so-called "Enterprise" solutions such as TierDeveloper is not failure to deliver, but the things they take away. Code generation tools may save you time coding particular parts of an application, but it's often difficult to write your own code alongside them, meaning that if you need features they don't provide, or want to do things in a different way, you're in a worse position than if you wrote your application from scratch. This is particularly the case when the RAD tool in question supplies its own runtime or API to support the code it produces. TierDeveloper, for example, builds applications against an assembly called EnterpriseServicedLib
, although I suspect this is more to enforce licensing conditions than out of necessity. It also requires an assembly entitled TDevFramework
, which provides (among other things) collection and serialization support.
If everything worked perfectly, I might be more sympathetic to both TierDeveloper's API lock-in and its hefty price tag. As it is, despite the intelligence behind it, TierDeveloper remains a quirky production, and it's impossible to overlook some of its frankly bizarre implementation details, like spawning regsvcs from the command line whenever you request a component rebuild (the resultant code lacks proper line endings, prompting Visual Studio to ask if you want to "normalize" them when you open the project externally). It's also easy to tie yourself in knots if you fail to perform project tasks in the correct order, and the accompanying documentation is poorly written and riddled with typos.
Accordingly, make sure you download a trial version to see if it's appropriate to your needs before burning your boats. There's no doubt TierDeveloper is clever, and in the right hands it might well deliver on its promise to "develop real-life complex .NET database applications in record time." But it's unpolished, and at $1495 for a single license, you might reasonably feel you want more for your money. You might consider the Professional edition, at a third the price ($595), but note that, among other restrictions, this has limited Visual Studio Integration, supports only SQL Server, doesn't allow dynamic queries, and won't let you customize the GUI templates for the applications it creates.