Nullable Object must have a value

I've been coding a lot of ASP.NET lately using the whole Microsoft portfolio of dev tools, and I'm in total shock. I had expected to hate it, but not from rational reasoning, but rather because they made it. I thought it was sleek enterprise level stuff. But I was wrong... here are some obvious rational reasons to hate it:

  • Runtime error messages are cryptic and un-helpful (see the title of this post). Often they're just summarized into texts like "error in database constraint... could be null, foreign-key, primary key... please check all the code you've ever written".

  • System.Collections don't support basic stuff like tuples and sets.

  • DataTables can't handle null values. I mean: They call this DRO!?

  • I tried to edit some SQL in a Table Adapter. It suddenly switched the parameters for the auto-generated method without warning me - silently breaking the application and giving me hours of debugging.

  • The design view for aspx files in Visual Studio is useless since it always requires manual editing afterwards

  • I wanted to copy a database. Since the copy-function was broken in Enterprise Manager (You get an error message and using the "copy error message" function renders an "error copying error message") I made a backup and wanted to restore it in a new database. The dialog for this operation silently switched the target for the restore several times - even the database files: to overwrite the production database. Pretty lucky to notice this, since it was hidden in another tab.

  • Visual Sourcesafe isn't a proper versioning system. You might as well just use a network share and depend on ntfs file locking. Where's the collaboration!?

  • There's only a very limited amount of free or open applications available for it. And especially Umbraco which is the flagship of .NET CMS systems is full of errors and tells you to pay up as soon as you'd like the pro stuff - like say a proper development/deployment system.

  • Umbraco crashed our IIS - all we did was use the copy-content function!? How exactly is it that a webpage is allowed to take down a whole server?

I could probably ramble on about this. The bottom line is simply: I would never choose their technology over stuff like Subversion, Apache, Java or Python. And the whole ASP.NET framework is far from Ruby and Django - but of course it's a lot older... it's so 2003. I would have filed a few bug reports, but I guess these guys don't have a bugzilla. Too bad.. I'll just have to leave my feedback on this public blog.