LINQ to SQL y Visual Basic 2008
LINQ to SQL (L2SQL)
Resumen general de lo publicado sobre LINQ hasta el momento:
Dentro del paradigma del trabajo con LINQ y ADO.NET, nos encontramos con LINQ to SQL.
En otras entradas de este blog, nos introdujimos entre otros en LINQ to DataSet, y ahora le llega el turno a LINQ to SQL.
Dentro de los ámbitos del uso de ADO.NET y LINQ, encontramos dentro de Microsoft .NET Framework 3.5 la posibilidad de trabajar con LINQ to DataSet, LINQ to SQL y LINQ to Entities.
Para trabajar con otros datos no accesibles directamente desde ADO.NET, podemos utilizar LINQ to XML y LINQ to Objects.
El modelo de Microsoft .NET Framework 3.5 es el siguiente:

En nuestro caso vamos a trabajar con la parte correspondiente con LINQ to SQL.
LINQ to SQL es utilizado para trabajar con fuentes de datos SQL Server, si bien hay intentos en internet para trabajar con otras fuentes de datos diferentes.
Para desarrollar aplicaciones de múltiples base de datos, utilizaremos LINQ to Entities que ofrece además muchas más posibilidades que LINQ to SQL.
Para realizar este ejemplo o iniciar la toma de contacto con LINQ to SQL, vamos a utilizar el modelo de datos utilizado en el excelente libro de Octavio Hernández “C# 3.0 y LINQ”.
Iniciaremos un nuevo proyecto de VB utilizando como plantilla la plantilla de aplicación para Windows y agregaremos un nuevo elemento en el proyecto.
El nuevo elemento será de tipo LINQ to SQL Classes y de extensión dbml (Database Markup Language). A ese elemento le daremos el nombre de Futbol2006 como se indica en la siguiente imagen:

Nada más insertar este elemento, veremos que por un lado se agregan al proyecto los ensamblados necesarios para trabajar con datos y LINQ, y por otro lado, aparece en pantalla un diseñador de los objetos relacionales vacío.
La idea es trabajar con él, pero antes de poder trabajar con el diseñador, deberemos agregar cierta información al mismo.

Para agregar esa información, la primera acción que realizaremos por lo tanto, será la de crear una conexión de datos con la base de datos FUTBOL2006.
Una vez establecida la conexión de datos, arrastraremos y soltaremos las tablas del modelo que queremos que aparezca en el diseñador de los objetos relacionales.
En el ORM observaremos entonces algo similar a lo siguiente.

Una particularidad en el diseñador, es que las relaciones entre tablas, quedan reflejadas dentro del modelo.
Partiendo de nuestro modelo de objetos relacionales, podemos trabajar con los objetos representados como si estuviéramos haciéndolo con la base de datos directamente.
A partir de aquí, trabajar con el modelo es coser y cantar.
En este ejemplo, vamos a agregar al formulario un control Button (btnSelectPlayers) y un control DataGridView (dgvPlayers).
Nuestro ejemplo en ejecución mostrará los jugadores de un club de futbol.
A continuación, vamos a escribir el siguiente código:
|
Public Class MainForm
' Declaramos el contexto para usarlo en todo el programa Private contexto As New Futbol2006DataContext()
Private Sub btnSelectPlayers_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectPlayers.Click ' Obtenemos los datos de Futbolistas segel equipo seleccionado Dim datos = From p In contexto.Futbolistas Where p.CodigoClub = Me.cboClubs.SelectedValue.ToString() Select p ' Volcamos los datos en el DataGridView Me.dgvPlayers.DataSource = datos ' Ajustamos los datos al control Me.dgvPlayers.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells) End Sub
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Ejecutamos el mpara cargar los Clubs de Futbol LoadClubs() End Sub
Private Sub LoadClubs() ' Cargamos los Clubs de Futbol Dim datos = From p In contexto.Clubs Select p.Codigo, p.Nombre Me.cboClubs.DataSource = datos ' Indicamos el valor a mostrar Me.cboClubs.DisplayMember = "Nombre" ' Indicamos el co clave asociado al valor mostrado Me.cboClubs.ValueMember = "Codigo" End Sub
End Class |
El resultado de ejecutar nuestra aplicación de ejemplo es el que se indica a continuación:

Espero que el ejemplo sea lo suficientemente descriptivo como para entender de forma básica, como funciona LINQ to SQL.