Mostrando entradas con la etiqueta LinQ. Mostrar todas las entradas
Mostrando entradas con la etiqueta LinQ. Mostrar todas las entradas

viernes, noviembre 05, 2010

Ejemplo básico de uso de LINQ

1. Nuevo proyecto WinForms
2. Añadir a formulario (name=grdPelis). Acoplar a contenedor primario.
3. Agregar al proyecto un nuevo elemento de tipo "Clases de LINQ to SQL" (name=MSDNVideo).
4. Clicar sobre "Explorador de servidores" en la superficie de diseño del nuevo elemento dbml.
5. Arrastrar la(s) tabla(s) (o vistas) que sea menester (p.e. Peliculas) desde el "explorador de servidores" a dicha superficie.
6. En el Form_Load() añadir el siguiente código:
MSDNVideoDataContext dc = new MSDNVideoDataContext();

BindingList pelis = new BindingList();

var query = (from pelicula in dc.Peliculas select pelicula).Take(10).Skip(2);

foreach (Pelicula peli in query)
{
pelis.Add(peli);
}

this.grdPeliculas.DataSource = pelis;

jueves, abril 03, 2008

Mantenimiento con "LinQ to SQL"/"Entity Data Model (EDM)"

En Visual Studio 2008 aparece LinQ, y en el Framework 3.5, EDM (Entity Data Model).

A continuación explico brevemente cómo hacer un mantenimiento básico con esto (sólo el modelado de entidades, no la capa de presentación):

1) Abrir un proyecto de Visual Studio 2008 de WinForms (p.e.).
2) Añadir un nuevo item de tipo "LinQ to SQL Classes". Se abre un "designer" para modelar la entidad.
3) Arrastrar desde el Server Explorer las tablas que formen parte de la entidad (p.e. Orders y OrderDetails). Esto crea un "DataContext".

4) Desde el interface se utiliza el "DataContext" para obtener la lista completa o cada uno de los elementos de la entidad. Por ejemplo, con "Orders":

MiDataContext dc = new MiDataContext();

//Obtener una "order" (Acceso a la BDD)
Order order1 = dc.Orders.First();

//Modificar la "order"
order1.ShipCountry = "Spain";

//Insertar nueva "order"
Order order2 = new Order();
order2.ShipCity = "Barcelona";
order2.InsertOnSubmit();

//Eliminar una "order"
dc.Orders.DeleteOnSubmit(dc.Orders.Where(/*...*/));

//Persistir cambios (en la BDD)
dc.SubmitChanges();