a second great tool i've been using lately...llblgen pro (www.llblgen.com).
first: our team got sick of saying “LLBLGen Pro” when referring to the tool and the code it generated...so we affectionately named it “cool j“ (yeah, you can see the deduction of the name...started out being ll cool j, etc.)
i consider myself always a skeptic. i am used to certain things and usually stick to them. you can imagine my skepticism when a teammate decided we use an ORM tool for data access/code generation.
what!? no way, those things don't work
of course my argument had no weight since i had no evidence to the fact that the ORM tools sucked. my teammate had evaluated a number of them and found LLBLGen Pro to be the best one out there from a feature/support perspective.
as with any ORM tool, your data model has to be solid...so we spent a lot of time on that. once completed, “cool j“ interpreted everything and generated the required data access layers for us -- and using them is a breeze. our project currently has only one stored procedure due to a long running process.
what!? you aren't using stored procs?! are you an idiot? everyone knows in-line sql is stupid, unsecure, hard to support, etc....
that's what i thought as well (again, my comfort zone) until i really did my research. you see, database is not my strongest point beyond the basics...so i had to see the proof for myself. well, what i found is that all the arguments for stored procs vs. dynamic sql statements aren't entirely valid and are based on a lot of assumptions of how dynamic sql statements are build and executed. (for a good synopsis, check out: http://www.theserverside.net/news/thread.tss?thread_id=31953)
“cool j” is awesome here. you see it leverages sp_executesql so that the statements are cached and it uses parameterized queries. additionally, the dynamic sql generated includes ONLY the updates required, because “cool j” has the capability of understanding what attributes of the entities are dirty and need to be updated.
in a nutshell, i'm a believer. this tool (along with others: http://timheuer.com/blog/archive/2005/02/11/1670.aspx) has really helped accellerate my development allowing me to concentrate on core business functionality. yes i'm still comfortable doing certain things my way, but i'm learning more and more about the generated code from “cool j” and ways of making it better based on my designs.
check it out.