2010-03-11 39 views
5

He oído que es mejor tener una conexión abierta al iniciar la aplicación y cerrarla cuando la aplicación se apaga.Windows Mobile Compact Framework SqlCeConnection

¿Qué tipo de problema puede ocurrir con múltiples conexiones?

¿Hay algún artículo que indique que es mejor tener una conexión?

¿Cuál es su experiencia con sql ce?

Respuesta

2

En nuestra aplicación SQL CE 3.5/Compact Framework 3.5, abrimos una conexión al inicio y la mantenemos abierta hasta que se cierre la aplicación. La base de datos se requiere en casi todas las interacciones del usuario en la aplicación y mantener la conexión abierta es más rápido que abrirla y cerrarla a pedido.

Todas las actualizaciones de datos se realizan en transacciones. Nosotros Commit las transacciones usando la opción CommitMode.Immediate. Esto asegura que los cambios en los datos se descarguen inmediatamente al archivo, lo que minimiza la posibilidad de pérdida de datos.

2

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.

+0

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). –

+0

¿Qué quieres decir con "preparado"? – pdiddy

+1

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

Cuestiones relacionadas