¿ Donde están ahora los datos y las herramientas de terceros ?

Este post, le escribí originalmente en mi blog personal el día 31/07/2011.

Una vez que hemos creado nuestra base de datos mediante SQL CE y LINQ to SQL, según las indicaciones del anterior post, estaría bien acceder a ella y poder verla editarla y manejarla de forma indirecta. Para ello existen diferentes formas de acceder a los datos almacenados en el Isolated Storage de nuestro dispositivo. Así mismo existen también otra serie de herramientas ya encaminadas a SQL CE que también pueden ser de utilidad en nuestros desarrollos.

Acceso al Isolated Storage:

Estas herramientas que voy a describir a continuación nos van a ayudar en el acceso al Isolated Storage de nuestro Windows Phone, no son especificas para SQL CE, sino que se pueden usar siempre y cuando necesitemos acceder, ver y copiar contenido del o al Isolated Storage.

Isolated Storage Explorer Tool

Es una herramienta que viene con el SDK de Windows Phone, aparece con la beta de las herramientas de desarrollo para “Mango”. Esta herramienta interna de Microsoft nos va a ayudar a listar, copiar y reemplazar ficheros y directorios del Isolated Storage se puede usar tanto para visualizar el contenido de nuestro emulador, como para visualizar el contenido de un dispositivo físico.

Como toda aplicación de línea de comandos es un tanto liosa, pero bueno, lo mejor es comenzar a saber como utilizar este tipo de herramientas antes de usar herramientas mas visuales de terceros que nos puedan facilitar mas la vida. Simplemente debemos de dirigirnos desde el prompt al directorio en donde esta el ejecutable “ISETool.exe”, que normalmente será: “c:Program FilesMicrosoft SDKsWindows PhoneV7.1ToolsIsolateStorageExplorerTool”, casi nada. Una vez allí simplemente deberemos de lanzar dicho ejecutable con la siguiente estructura:

ISETool.exe <ts|rs|dir[device-folder]> <xd|de> <GUID> [<desktop-path>]

Y esta es la explicación de los opciones posibles.

Parámetro Descripción
ts Copia de ficheros y directorios en el Isolated Storage al ordenador.
rs Reemplaza los ficheros y directorios del Isolated Storage desde el ordenador.
dir Listado de ficheros y directorios del directorio especificado del Isolated Storage
device-folder Directorio del Isolated Storage a manejar.
xd Indicamos que las funciones serán sobre el emulador.
de Indicamos que las funciones las realizaremos sobre un dispositivo físico.
GUID Especifica el ProductID de la aplicación. Este dato esta contenido en el fichero WPAppManifest.xml
desktop-path Especifica el directorio del ordenador, en donde copiaremos o de donde reemplazaremos los ficheros del Isolated Storage

En nuestro caso anterior, copiaremos el contenido del Isolated Storage de nuestro emulador, al ordenador para ver si nos ha generado correctamente el fichero .sdf de nuestra base de datos. Para ello bastaría con ejecutar la sentencia:

ISETool.exe ts xd 0368a47f-5c90-4363-9194-b5c1da3f6218 “C:WP7”

Con esta “sencilla” instrucción ya tenemos en nuestro directorio WP7 de nuestro disco C, todo el contenido del Isolated Storage del emulador.

 ISETool1

Debemos de tener en cuenta dos cosas mas; Esta herramienta nunca nos copiara las “application settings” guardadas en nuestra aplicación, y lo mas importante es que debemos de ejecutar la línea de comandos con los mismos privilegios que hayamos ejecutado el emulador, en nuestro caso, ya que si no lo hacemos así no nos funcionara.

Una vez hecho esto ya tenemos todos los datos contenidos en el Isolated Storage en nuestra carpeta indicada. La utilidad nos guarda todos estos datos dentro de una carpeta llamada “IsolatedStore” dentro de la ruta especificada que le hayamos dado para guardarlo.

ISETool2

En la esta pagina de MSDN podemos ver un poco mas en profundidad la forma de utilizar esta herramienta.

Windows Phone 7 Isolated Storage Explorer

Una vez que nos hemos pegado con la línea de comandos, siempre es bueno volver a recordar nuestra época de MS-DOS, podemos instalar esta pequeña aplicación, que es a la vez una aplicación y un plugin para Visual Studio.

Es una herramienta de terceros hospedada en Codeplex.

Su utilización es muy sencilla, y realmente son de estas aplicaciones que le hacen a uno la vida bastante mas sencilla, tanto por su fácil e intuitivo manejo como por todo lo que nos aporta. Simplemente debemos de descargarnos el fichero de instalación de Codeplex y realizar la típica instalación de la triple N (Next, Next, Next). Una vez instalado lo único que debemos de cambiar es una serie de líneas en aquellas aplicaciones en las que queramos utilizar dicho complemento.

Para ello basta con referenciar el ensamblado que viene con la instalación “IsolatedStorageExplorer.dll” y añadir dos sencillas llamadas en nuestro App.xaml.cs. La primera en el procedimiento launching

private void Application_Launching(object sender, LaunchingEventArgs e)

{     IsolatedStorageExplorer.Explorer.Start(“Localhost”);

}

y la segunda en el procedimiento de Activated

private void Application_Activated(object sender, ActivatedEventArgs e)

{     IsolatedStorageExplorer.Explorer.RestoreFromTombstone();

}

Lo único que tenemos que tener en cuenta es que en el primer caso, el procedimiento del “Launching” es en el que debemos de indicarle la IP de la maquina en donde estará corriendo la aplicación a “visualizar”, en este caso como vamos a ver directamente el emulador, este se encuentra en la misma maquina que al Explorer con lo que con poner “Localhost” es suficiente. Tras esto tanto en la aplicación de escritorio (ojo abrirla después de arrancar la aplicación), como en el plugin de Visual Studio tendremos acceso al Isolated Storage de nuestra aplicación. Podremos copiar archivos desde y hasta el Isolated Storage, crear carpetas, borrar ficheros, etc… IsolatedStorageExplorer Un herramienta sencilla pero bastante productiva.

Manejo de SQL Server CE.

Estas otras herramientas están mas enfocadas al manejo de SQL Server CE y a sus bases de datos, no son de carácter general como las anteriores, pero nos ayudaran en la gestión y administración de las bases de datos sdf.

SQL Metal.

Herramienta de línea de comandos que viene con el SDK de .NET. En este caso dicha utilidad se encuentra en el directorio “Program FilesMicrosoft SDKsWindowsv7.0Abin”, (esta dirección depende de la versión del framework y de Visual Studio que tengamos instalado) y nos ayudara a generar nuestras entidades de mapeo, para nuestros objetos en .NET. SQL Metal no es una herramienta especifica para Windows Phone, sino que genera a partir (y esto es muy importante) de un fichero de base de datos las clases necesarias para poder utilizar LINQ to SQL.

Como comento anteriormente genera dichas clases a partir de un fichero dado, es decir debemos de disponer de un fichero para poder generar las clases de entidad de dicho fichero. Así mismo como he comentado también, no es especifico de un motor de base de datos sino que funciona tanto para BBDD de SQL Server, como SQL Server Compact Edition.

Pongamos un ejemplo; A partir de la base de datos de ejemplo “Northwind”, típica base de datos de ejemplo proporcionada por Microsoft, la cual en su versión para SQL Compact podemos encontrar en “Program FilesMicrosoft SQL Server Compact Editionv3.5Samples”, generaremos las clases necesarias para poder utilizar LINQ to SQL en nuestro Windows Phone.

No es mi intención en este Post adentrarme muy de lleno en esta herramienta, ya que es bastante densa, simplemente generaremos un fichero con las entidades correspondientes a la base de datos anterior. Para ello lanzaremos la siguiente instrucción en la línea de comandos:

Sqlmetal.exe “C:Program FilesMicrosoft SQL Server Compact Editionv3.5SamplesNorthwind.sdf” /code:”C:MiProyectoMapeo.cs” /language:csharp /namespace:NortwindNS /context:NortwindContext

Con esto ejecutamos la utilidad y nos va a generar un fichero en CSharp, denominado Mapeo.cs, en el directorio C:MiProyecto de la base de datos Nortwind.sdf, creando dichas clases bajo el espacio de nombres NortwindNS y nos creara además una clase para el contexto de datos denominada NortwindContext. SqlMetal1

 

Solo existe una pequeña pega, y es que el código generado por SQLMetal no es 100% compatible con un proyecto para Windows Phone, pero es bastante fácil de solucionar, basta con eliminar dos de los constructores de la clase del contexto de datos, en donde se indica un objeto del tipo System.Data.IDbConnection. Quedándonos con los constructores que nos solicitan un objeto del tipo string para la conexión.

SqlMetal2 Para un mayor control de esta utilidad basta con acudir a la pagina de MSDN que trata sobre el tema.

SQL Server Compact Toolbox:

Esta herramienta que está hospedada en Codeplex, es obra del danés Erik EJ, MVP de SQL Server Compact, y nos va a permitir manejar nuestra base de datos de SQL Server Compact, desde un plugin de Visual Studio o desde una aplicación independiente.

Nos permitirá realizar sentencias T-SQL sobre nuestra base de datos, grabar los scripts de creación de la base de datos y del volcado de datos, generación de las clases y del contexto de datos al igual que SQL Metal, pero enfocado completamente a Windows Phone, etc….

SqlServerTool Es bastante recomendable así mismo seguir el Blog de Erik EJ, para enterarnos de alguna que otra cosa con respecto a la gestión y utilización de SQL Server Compact tanto para entornos de escritorio como para entornos móviles Windows Phone 6.x y Windows Phone 7.

Existe en la web muchas otras herramientas para la gestión y el manejo de Sql Server Compact, pero a mi modo de ver estas dos son las mas importantes, una porque viene con Visual Studio y la otra porque para ser gratuita es una herramienta muy eficaz y de gran utilidad.

Nota: “¿Dónde están ahora el caballo y el caballero? ¿Dónde está el cuerno que sonaba? ¿Dónde están el yelmo y la coraza, y los luminosos cabellos flotantes? ¿Dónde están la mano en las cuerdas del arpa y el fuego rojo encendido?…. “: Extracto del poema sobre Eorl, fundador de Rohan, recitado por Aragorn a Legolas en su camino hacia Edoras.

Un comentario en “¿ Donde están ahora los datos y las herramientas de terceros ?”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *