I've been porting an application of ours to .NET CF 2.0, Mobile 5.0 and SQL Mobile the past couple of weeks.

On .NET CF 2.0 : very impressive. The .NET Compact Framework 1 was a bit lacking in functionality - it really felt like Microsoft shipped an unfinished product. However, .NET CF 2 provides a lot of new functionality : Pocket Outlook Access, Phone and messaging capabilities, new controls, etc. Basically everything the guys at OpenNet CF had in their previous version, is included into the new framework. They've released a new version of their library that adds even more functionality - download it and use it if you work with the Compact Framework.

Working with generics is an absolute godsend - can't tell you how much the incessant casting of objects chewed on my nerves...

I'm a bit dissapointed in the SQL Mobile zone - it seems that all the old features (read "bugs) are still there like the failure of cleaning up SqlCeCommand objects. However, being able to make multiple connections to the database and remove my Singleton connection manager class is great! Side Track : Note, however, that making the connection to the database is a real bottleneck. For multiple transactions (Microsoft, when can we get batch transactions on Mobile?) like batch inserts, it's best to keep a connection open and reuse the same command - you'll definitely notice the speed difference when you don't.

Microsoft has added support in the Visual Studio IDE for designing SQL Mobile databases (no more SQL queries painfully typed in using a stencil on the device). Works great, get's deployed onto your device and you can even query it! What I'm missing there (and it's driving me nuts) is support for ordering columns (I'm adding a new column and I want it to be next to the primary key), renaming tables (the only way I've found so far to do this is to recreate the entire table), and stored procedures.

OK, the stored procedures is going a bit too far, but it would be nice, wouldn't it?