Friday, September 11, 2009

Who Loves the GAT?

(This was originally posted 2008.01.23)

I've been playing around with the GAT, and the various subsequent GAT packages for a while now. I have to say, it's definitely one of those love/hate relationships. I really like what it does in terms of generating code. And fairly good code.

But....

Some of it is overly complex and generates poorly organized files. For instance, I tried the "Data Repository" factory. It's a very good ORM generator, with lots of features in terms of managing states of objects, generating CRUD stored procedures, etc. But the number of files generated is ENORMOUS. My test database had about 6 tables. 3 of the tables were "linked" in a chain, parent -> child1 -> child2. Each CRUD stored procedure wrapper was, as I recall, a separate file, each with a factory class in another file. And the generated file names didn't start with the table name. So all of the files generated for one table were scattered all over the place with other files for other tables in between. It was a nightmare. I could have dealt with the badly generated file names if all the files for a table were organized into a folder with the table name. But that, sadly was not the case. I think for my 6 tables, something like 100 files were generated -- all in the same folder. Imagine if I had a "real" database with something like 100 tables ....

I then uninstalled the Data Repository -- and am in an install "Catch-22". I couldn't uninstall anything else. Something about the uninstall of the Data Repository removed something necessary for OTHER GAT package uninstalls to work. Finally after a lot of desultory searching on the Internet, I was able to manually remove everything related to the GAT and GAT packages. I know, because when I try to re-install the GAT, it doesn't give me an error stating that it's already installed. Instead, it fails telling me there is a component missing. Less than desultory searching leads me nowhere. The missing component cannot apparently be downloaded by itself.

This is actually the REAL problem with the GAT and the GAT packages. It's too much like working with UNIX packages. They are all like someone's school project. I have spent more time trying to manage the GAT packages than they could possibly have saved me in my coding efforts. If Microsoft is serious about getting people to invest the time in trying to get folks to really trying these out, they have to provide better quality in the management side of these packages.