LINQ to SQL y Visual Basic 2008 - Jorge Serrano - MVP Visual Developer - Visual Basic

LINQ to SQL y Visual Basic 2008

Visual Studio 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ándezC# 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.

Published 17/1/2008 0:50 por Jorge Serrano

Comentarios

Thursday, January 17, 2008 11:31 PM por AlbertoGs

# re: LINQ to SQL y Visual Basic 2008

Hola Jorge

¿Has llegado a probar si existe sincronización (aunque sea forzándola)?

Por cierto aunque no tenga nada que ver... ;)

www.desarrollaconmsdn.com/.../index.html

Friday, January 25, 2008 7:32 AM por El blog de Jorge

# LINQ to Entities y Visual Basic 2008 - Parte 1

LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general

Friday, January 25, 2008 9:05 AM por El blog de Jorge

# LINQ to Entities y Visual Basic 2008 - Parte 1

LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general

Saturday, January 26, 2008 12:52 AM por FEFE

# re: LINQ to SQL y Visual Basic 2008

Buenas Jorge, una pregunta sobre el tema:

¿Existe alguna manera de formar una query (para un Select) en donde la tabla sobre la que estas haciendo la consulta fuese dinámica?

Lo digo para saber si se pueden formar queries que no dependan del objeto que sobre el que se forman.

Un saludo.

Friday, February 01, 2008 11:16 AM por Jorge Serrano

# re: LINQ to SQL y Visual Basic 2008

Hola FEFE,

espero haberte entendido bien.

Podrías utilizar ExecuteQuery como por ejemplo:

Dim otrosDatos = contexto.ExecuteQuery(Of Futbolista)("Select * From Futbolista WHERE CodigoClub='RMA'")

Me.dgvPlayers.DataSource = otrosDatos.ToList()

De esta manera, atacaríamos a la tabla Futbolista, fuera del uso propio de LINQ a través de su contexto que establece la conexión con el modelo de datos.

Luego recuperaríamos la información y la mostraríamos en el DataGridView (por ejemplo).

Si la tabla no existe dentro del modelo, .NET no encontrará forma de asociar la tabla a la entidad del modelo y no se podrá acceder de forma directa.

Espero que esto te aporte alguna ayuda.

Friday, February 22, 2008 7:35 PM por miriam

# re: LINQ to SQL y Visual Basic 2008

hola!! sorry por la pregunta estoy intentando hacer la conexion de sql express con visual basic 2008 pero cuando agrego la coneccion me dice que el archivo esta en uso, la BD pero tengo cerrado el SQL. la verdad es que no se que pueda ser te agradeceria una contestacion y otro ejemplo si es que lo tienes.

mi correo electronico es: mirivonbh@hotmail.com

Thursday, June 26, 2008 5:10 PM por Hector

# re: LINQ to SQL y Visual Basic 2008

Holas aqui un novato en programacion.

Quiero hacer un query desde mi visual basic 2008.Como? alguna idea

Por otro lado tengo un programa desarrollado en visual basic 6 quiero hacerle un upgrade ? se puede, uso ADOdb

Friday, October 24, 2008 1:43 AM por Eserrano

# re: LINQ to SQL y Visual Basic 2008

Y cuando las relaciones entre tablas no aparecen???? Como hariamos en forma manual para generarlas?

Gracias.

Tuesday, October 27, 2009 3:24 AM por saludar

# re: LINQ to SQL y Visual Basic 2008

es t muy bien tu aportacion pero cambiastes algunas cosas k no esplicas a fondo

Wednesday, November 18, 2009 1:29 AM por VALERIA

# Visual Basic 2008

POR FAVOR AYUDENME CON UN MANUAL DE VISUAL BASIC 2008 GRACIAS

Deja tu comentario

(requerido) 
(requerido) 
(opcional)
(requerido)