Cela dépend vraiment. Pour les performances, SQL CE fonctionne mieux s'il existe toujours une connexion en direct à la base de données, car le moteur n'a pas à tout accumuler chaque fois que vous vous connectez. Avoir une connexion unique, cependant, conduit à flushiong paresseux de données dans le fichier, et une plus grande probabilité de perte de données ou de corruption en cas de défaillance catastrophique.
J'ai tendance à ouvrir une connexion «factice» à la base de données au démarrage de l'application et j'ai toujours cette connexion ouverte mais rarement ou jamais réellement utilisée. Cela maintient le moteur "amorcé" si vous voulez. Puis, pour l'accès réel aux données, j'utilise une connexion distincte et gère l'état en fonction de l'activité que je fais, en la laissant généralement ouverte à plusieurs requêtes (une pseudo-transaction si vous voulez), mais sans l'ouvrir indéfiniment.
Vous pouvez modifier le comportement de rinçage paresseux de deux manières. Lorsque vous appelez 'Commit' sur un' SqlCeTransaction', vous pouvez 'CommitMode.Immediate' pour vider la transaction immédiatement (http://msdn.microsoft.com/en-US/library/esdw1h9d.aspx). Il existe également une option 'flush interval' sur la chaîne de connexion (http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.connectionstring.aspx). –
Que voulez-vous dire par "amorcée" ?? – pdiddy
Je cherchais n'importe quel document public sur ceci, mais tout ce que je peux trouver est un email privé d'un dev sur l'équipe de SQL CE. Fondamentalement, la première connexion à une base de données initialise certains objets en interne et toutes les autres connexions les utilisent. La création et la conservation d'une connexion génère ces objets pour une utilisation par toutes les connexions suivantes (améliorant ainsi les performances). – ctacke