Estoy usando la misma biblioteca para la aplicación de nuestra empresa y, hasta donde yo sé, también documentada en http://wp7sqlite.codeplex.com (under Some Recommendations), si cierra la conexión tendrá que volver a crearla.
== == Comentarios adicionales
He rastreado por la causa del error, creó una solución y poner a prueba, en nuestra aplicación. En resumen, para portar la biblioteca Community.CSharpSqlite a WP7, el autor escribió un contenedor FileStream alrededor de WP7 IsolatedStorageFileStream. Cuando se abre una base de datos, la secuencia de archivos db se abre, lee y cierra CSharpSqlite. Pero un identificador de este flujo también se almacena en un diccionario que mapea la ruta del archivo a la transmisión. Cuando se abre una base de datos por segunda vez, se recupera el identificador de la secuencia, pero como está cerrado (supongo que aún no se ha verificado), la base de datos no se abre.
voy a tratar de conseguir mis cambios desplegados para el proyecto wp7sqlite.codeplex.com, pero mientras tanto, si usted tiene la source code realizar los siguientes cambios a Community.CsharpSqlite.FileStream
cambio de
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int unused)
{
IsolatedStorageFileStream handler = null;
if (FileStream.HandleTracker.TryGetValue(path, out handler))
{
_internal = handler;
}
else
{
if (mode == FileMode.Create || mode == FileMode.CreateNew)
{
_internal = IsolatedStorageIO.Default.CreateFile(path);
}
else
{
_internal = IsolatedStorageIO.Default.OpenFile(path, FileMode.OpenOrCreate);
}
FileStream.HandleTracker.Add(path, _internal);
}
}
a
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int unused)
{
IsolatedStorageFileStream handler = null;
if(FileStream.HandleTracker.TryGetValue(path, out handler))
{
_internal = handler;
if(!_internal.CanRead)
{
FileStream.HandleTracker.Remove(path);
CreateOpenNewFile(path, mode);
}
} else {
CreateOpenNewFile(path, mode);
}
}
private void CreateOpenNewFile(string path, FileMode mode)
{
if(mode == FileMode.Create || mode == FileMode.CreateNew)
{
_internal = IsolatedStorageIO.Default.CreateFile(path);
} else {
try {
_internal = IsolatedStorageIO.Default.OpenFile(path, FileMode.OpenOrCreate);
} catch(Exception ex) {
var v = ex;
}
}
FileStream.HandleTracker.Add(path, _internal);
}
Esta es la primera vez que estoy tratando de depurar y contribuir a un proyecto de código abierto. Cualquier comentario o pensamiento sobre estos cambios será muy apreciado.
Alasdair.
Con más de 100 preguntas que usted debe saber cómo dar formato a tus mensajes de ahora, ver http://stackoverflow.com/editing-help por más. – BoltClock