Realmente depende. Para el rendimiento, SQL CE funciona mejor si siempre hay una conexión en vivo a la base de datos, ya que el motor no tiene que crear todo cada vez que se conecta.
Tener una sola conexión, sin embargo, conduce a una laxitud de los datos en el archivo, y una mayor probabilidad de pérdida de datos o corrupción en el caso de una falla catastrófica.
Tiendo a abrir una conexión "falsa" a la base de datos al inicio de la aplicación y tengo esa conexión siempre abierta, pero rara vez o nunca utilizada. Esto mantiene el motor "cebado" si se quiere. Para el acceso real a los datos, utilizo una conexión separada y administro el estado según la actividad que estoy haciendo, generalmente dejándolo abierto en múltiples consultas (una pseudo transacción, si lo desea), pero no dejándolo abierto indefinidamente.
Puede cambiar el comportamiento de descarga diferida de dos maneras. Cuando llama a 'Commit' en' SqlCeTransaction', puede 'CommitMode.Immediate' para purgar la transacción inmediatamente (http://msdn.microsoft.com/en-US/library/esdw1h9d.aspx). También hay una opción 'intervalo de descarga 'en la cadena de conexión (http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.connectionstring.aspx). –
¿Qué quieres decir con "preparado"? – pdiddy
Estaba buscando cualquier documento público sobre esto, pero todo lo que puedo encontrar es un correo electrónico privado de un desarrollador en el equipo de SQL CE. Básicamente, la primera conexión a una base de datos inicializa algunos objetos internamente y cualquier otra conexión los usa. Al crear y mantener una conexión, se crean esos objetos para que los utilicen todas las conexiones subsiguientes (lo que mejora el rendimiento). – ctacke