[SL] Acceder a una Base de Datos desde Silverlight

En primer lugar decir, como ya dije en el anterior post de SL, que soy muy nuevo en el desarrollo de SL así que espero FeedBack de cosas mejorables :p.

Introducción

El objeto de este post, es definir la estructura básica y ver como consumir datos de una Base de Datos desde Silverlight.

Primer Paso:

Crear un proyecto del tipo Librería de Clases en C# que llamaremos: Server.Datos

Este proyecto va a contener el código relacionado con el manejo de Base de Datos, en este ejemplo vamos a utilizar Entity Framework,
por lo tanto agregaremos un  nuevo fichero del Tipo Entity Data Model y configuraremos la conexión a la Base de Datos (Para este ejemplo
estoy utilizando la BD de ejemplo Northwind).

Segundo Paso:

Vamos a agregar otro proyecto de tipo librería de clases que llamaremos Server.Servicio.

Este proyecto va a ser el encargado de suministrar los servicios de comunicación con la Base de Datos indicada en el proyecto anterior.

El primer paso de este proyecto será establecer una referencia al proyecto "Server.Datos". y generar la solución para que detecte las clases generadas
en EF.

Después agregaremos un fichero de tipo DomainDataServices al proyecto:

Nos pedirá que configuremos el objeto que va a servir como contexto, y por defecto aparecerá seleccionado el que creamos en el proyecto anterior.
También aparecerán listadas todas las entidades de nuestro contexto, y si son editables o no. Para este ejemplo únicamente seleccionaremos la tabla
"Categories".

Al pulsar aceptar, va a generar una clase con los métodos necesarios para insertar, actualizar o borrar datos de nuestra BD.

Tercer Paso:

A continuación vamos a agregar un nuevo proyecto de tipo Silverlight Application al que llamaremos Client.Aplicacion. Al agregar este proyecto
nos creará solicitará en que tipo de proyecto vamos a alejar nuestra aplicación, por defecto viene ASP.NET Web Application así que dejaremos ese, y
la versión de Silverlight 4.

Una vez creado este proyecto, veremos que en la aplicación también se ha creado un proyecto del tipo indicado antes (ASP.NEt Web Application) llamado
Aplicacion.Web.

Dentro de este proyecto vamos a modificar la configuración del Web.Config:

En el apartado Configuration vamos a agregar la referencia para trabajar con Entidades (EF)

 

   1: <httpModules>

   2:   <add name="DomainServiceModule" 

   3:        type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, 

   4:        System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0,

   5:        Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

   6: </httpModules>

Después agregaremos el siguiente fragmento:

   1: <system.serviceModel>

   2:   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 

   3:     multipleSiteBindingsEnabled="true" />

   4: </system.serviceModel> 

También agregaremos la cadena de conexión a la Base de Datos, tal cual la ha creado el modelo de EF.

Por ultimo dentro del proyecto Web agregaremos una referencia al proyecto Server.Servicio.

Mostrando Datos

Bien para poder mostrar datos, vamos a empezar a definir el XAML:

       

   1: <ListBox   Grid.Column="0" x:Name="listadoCategorias">

   2:             <ListBox.ItemTemplate>

   3:                 <DataTemplate>

   4:                     <Grid>

   5:                         <Grid.ColumnDefinitions>

   6:                             <ColumnDefinition/>

   7:                             <ColumnDefinition/>

   8:                         </Grid.ColumnDefinitions>

   9:                         <TextBlock Grid.Column="0" Text="{Binding CategoryName}"/>

  10:                         <TextBlock Grid.Column="1" Text="{Binding Description}"/>

  11:                     </Grid>

  12:                 </DataTemplate>

  13:             </ListBox.ItemTemplate>            

  14:         </ListBox>

Y en el CodeBehind vamos a  escribir el siguiente código:

   1: var context = new Server.Servicio.dServicio();

   2: context.Load(context.GetCategoriesQuery());

   3: listadoCategorias.ItemsSource = context.Categories;

 

En próximos posts, veremos como introducirnos en el uso del patrón MVVM y su uso con Silverlight.

 

Espero que os sea de utilidad.

 

Saludos.

 

PD: Os dejo el enlace a la descarga del proyecto de ejemplo.

6 comentarios en “[SL] Acceder a una Base de Datos desde Silverlight”

  1. hola lo k no entiendo es la ultima parte. del codebehin. lo trato de hacer en aplicacion en los mainpage.xaml pero nolo hace en que parte se tiene que hacer esto? ya k no veo la referencia del server.servicio ya que esa se quedo en el .web

  2. Hola ado, perdón por tardar en contestar.

    Donde me refiero al codeBehind, es el código c# que tienes que poner en el Inicializador de la página.

Deja un comentario

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