In spring this year, I began work on a moderately sized business application.
The time from learning what the program should do to the first prototype were
less than 2 weeks. To pull it off, I basically ditched any sane development
practice and started throwing code at the problem as fast as I could.
The application required a client/server model and the server had to store
its data in a database. At that point in time, I knew about ORMs but had never
used one before, but hoping for the best, I picked Microsoft’s Entity Framework because it had
a visual designer and looked like I could just drag & drop my data model
together and then figure out how to perform queries.
It fell flat when I noticed that I could only choose between TPT (Table
Per Type) and TPH (Table Per Hierarchy) globally
for the whole freakin’ model. So I tried NHibernate and
quickly rebounded due to its learning curve, resorting to writing SQL queries myself
and loading them into objects with a very basic class mapper that I had written for
another, much smaller project some time ago.
It was tedious work, but at least hacking away for two hours got you two hours further,
not one step forward and two steps back figuring out the ORM. And so I managed to get
the prototype done with two all-nighters. In autumn, when the heat was off, I decided to
do the database properly, using NHibernate…
Read More