SQL Compact Edition est une très bonne solution pour la persistance de vos données dans vos applications Windows.
Je ne serais vous conseiller d'utiliser la technologie ClickOnce pour le déploiement et la mise à jour de vos applications. Votre base SQLCE pourra se déployer simplement, sans la moindre installation.
Le SQL Compact Edition Runtime qui embarque les assemblies et DLLs nécessaires pour utiliser votre base SQLCE, il n'est pas obligatoire de l'installer. Le déploiement des 8 dlls associés est suffisant, sauf dans un cas : si vous vous appuyez sur EntLib pour votre couche d'accès aux données. L'installation du runtime s'avère obligatoire.
Mais revenons au bug du jour. En utilisant mon application windows couplée avec SQL CE sur un Vista 64 bits, impossible d'accéder au contenu de la base. J'installe le Runtime SQL CE, rien à faire le problème persiste. Procmon me montre que mon appli va tenter de charger sqlceme30.dll dans mon répertoire bin, rien a faire. Pourtant elle est bien là !
Le message est le suivant : "Unable to load DLL'sqlceme30.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)".
La solution est venue de Microsoft. Pourtant nous avons cherché un peu partout, la résolution du problème est peut visible sur google ou sur la base de connaissance de Microsoft.
Sur votre projet, dans les propriétés, Générer (Build) : Définissez comme plate forme cible non pas Any CPU mais x86.
Votre application fonctionnera enfin sous XP/Vista 64 avec le wow64 et toujours sur les plate forme 32 bits.