Windows Phone y SQL CE

Una de las características atractivas de las aplicaciones para Windows Phone, es la posibilidad de incorporar almacenamiento local en SQL CE. Mucho se discute y es sabido que existen diversas técnicas, pero como siempre muchos de vosotros preguntáis por la “Chuleta” paso a paso o pequeño laboratorio guía para iniciarnos en su uso.

La idea principal es utilizar “SQL Metal” para construir nuestro “Data Context”, nuestra clase se acceso a datos se creara a partir de nuestra BD. En tono de humor será nuestro “Entity Framework” trabajando en invertido J

Aquí tenéis el laboratorio de introducción paso, paso… espero que os sea asequible i de utilidad.

Crear la Base de datos.
Desde el explorador de servidores de Visual Studio, agregaremos una conexión :

WinPhoSql1
Seleccionaremos SQL CE

WinPhoSql2

Pondremos nombre a nuestra base de datos

WinPhoSql3

Seleccionar “Crear”

WinPhoSql4
Crear La tabla:

WinPhoSql5WinPhoSql6

WinPhoSql7

WinPhoSql8

Con esto finalizaremos la creación de nuestra BD “WinPhoneData” y la tabla “LocalizationData”.

El siguiente paso consistirá en crearnos la clase con el contexto de datos para nuestra aplicación.

En primer lugar deberemos invocar el “CMD” o “Power Shell”, dependiendo de vuestros gustos. Los siguientes pasos serán muy sencillos, pues requerirán simplemente dos mandatos:

Es importante observar la Invocación a SQL Metal, pasándole las ubicaciones de la “sdf” anteriormente creada y el lenguaje destino para la generación de nuestra clase de acceso a datos.

1) Añadir a nuestro Path la referencia a “\Program Files\Microsoft SDKs\Windows\v7.0A\bin”

2) sqlmetal d:\WinPhoneData.sdf /language:vb /namespace:WinPhoneData /pluralize /code:d:WinPhoneData.vb

WinPhoSql9
Una vez ejecutados dichos comandos, tendremos nuestra “WinPhoneData.vb” lista para ser utilizada en nuestro Windows Phone Project.

Por lo tanto nuestros próximos pasos serán muy fáciles, Desde nuestra instancia de Visual Studio, crearemos un nuevo proyecto “Windows Phone”.

image

Evidentemente seleccionaremos el SO 7.1.

WinPhoSql10

Para que todo ruede a la perfección no deberemos olvidar las referencias a System.Data.Linq

WinPhoSql11
Desde las propiedades del proyecto, seleccionaremos la de añadir un elemento existente:

WinPhoSql12

Agregando la clase generada anteriormente.

WinPhoSql13

La clase generada por Sqlmetal, no es 100% compatible, pues implementa ‘IDBConnection’ deberemos editar “WinPhoneData.vb” y eliminar los sub’s “New’s” sobrecargados, para conexiones ‘Idb’. 

        Public Sub New(ByVal connection As System.Data.IDbConnection)
            MyBase.New(connection, mappingSource)
            OnCreated()
        End Sub
 
        Public Sub New(ByVal connection As System.Data.IDbConnection,
                       ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
            MyBase.New(connection, mappingSource)
            OnCreated()
        End Sub

Una vez completado este punto, podremos compilar la aplicación. Sin ningún tipo de problemas. Luego es tarea de cada cual adaptar los requerimientos navegando a través de sus propiedades y métodos… por ejemplo: 

Partial Public Class MainPage
    Inherits PhoneApplicationPage
 
    ' Constructor
    Private Dbas As WinPhoneData.WinPhoneData
    Public Sub New()
        InitializeComponent()
        InitializeData()
    End Sub
 
    Sub InitializeData()
        Me.Dbas = New WinPhoneData.WinPhoneData("Data Source=isostore:\GeoLocData.sdf")
        If Not Dbas.DatabaseExists Then
            Dbas.CreateDatabase()
        End If
        ' Simular una nueva entrada a la tabla de localizacion
        Dim c1 = New WinPhoneData.LocalizationData With {.Date = DateTime.Now, .Latitude = 10, .Longitude = 15, .Speed = 11}
        Dim ls As New List(Of WinPhoneData.LocalizationDataFrom {c1}
        Dbas.LocalizationDatas.InsertAllOnSubmit(ls)
        Dbas.SubmitChanges()
    End Sub
 
End Class

Espero que pequeño paso a paso os ayude a completar vuestra primera aplicación para Windows Phone y almacén SQL Ce en local. Si la descripción anterior no es suficiente, no dudéis en solicitármelo y puedo adjuntaros el documento en cuestión a titulo de Guía Rápida.
Saludos,
PepLluis,

Deja una respuesta

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