Jorge Serrano
  • Home

LINQ to SQL y Visual Basic 2008

  • By jorge
  • Ene-17-2008
  • Sin categoría
  • 15 Comments.

Visual Studio 2008


LINQ to SQL (L2SQL) 


Resumen general de lo publicado sobre LINQ hasta el momento:




  • Información general sobre LINQ



    • LINQ HOL para Visual Basic 2008


    • VBTeam – Aprendiendo LINQ para Visual Basic 2008


    • LINQ HOL para C# 3.0


    • LINQ to Entities o LINQ to SQL


  • LINQ to Objects



    • Empezando con LINQ y Visual Basic 2008


    • LINQ, Visual Basic 2008 y array de clases


  • LINQ to XML



    • LINQ, Visual Basic 2008 y XML


  • LINQ to DataSet



    • LINQ, Visual Basic 2008 y DataSet


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.

Comments

15 Responsesso far

  1. albertogs dice:
    17 enero, 2008 a las 11:31 pm

    Hola Jorge

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

    Por cierto aunque no tenga nada que ver… 😉

    http://www.desarrollaconmsdn.com/msdn/CursosOnline/Curso_Intro_NET_VBNET/index.html

    Responder
  2. anonymous dice:
    25 enero, 2008 a las 7:32 am

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

    Responder
  3. anonymous dice:
    25 enero, 2008 a las 9:05 am

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

    Responder
  4. anonymous dice:
    26 enero, 2008 a las 12:52 am

    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.

    Responder
  5. jorge dice:
    1 febrero, 2008 a las 11:16 am

    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.

    Responder
  6. anonymous dice:
    22 febrero, 2008 a las 7:35 pm

    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

    Responder
  7. anonymous dice:
    26 junio, 2008 a las 5:10 pm

    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

    Responder
  8. anonymous dice:
    24 octubre, 2008 a las 1:43 am

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

    Gracias.

    Responder
  9. anonymous dice:
    27 octubre, 2009 a las 3:24 am

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

    Responder
  10. anonymous dice:
    18 noviembre, 2009 a las 1:29 am

    POR FAVOR AYUDENME CON UN MANUAL DE VISUAL BASIC 2008 GRACIAS

    Responder
  11. anonymous dice:
    21 septiembre, 2010 a las 6:20 pm

    Buen dia Jorge
    Elabore un ejercicio de los tantos que se muestran en internet para grabar datos en una base de datos sql
    Pero resulta que realmente los datos no se graban, (se muestran unicamente en el datagridview pero no se graban, sera posible por favor puedas ayudarme, este es el codigo que empleado desde luego el 95% se muestra en automatico yo solo agrege algunas lineas:

    Public Class FrmClientes

    Private Sub ClientesBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Me.Validate()
    Me.ClientesBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.Database01DataSet)

    End Sub

    Private Sub FrmClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ‘TODO: esta línea de código carga datos en la tabla ‘Database01DataSet.Clientes’ Puede moverla o quitarla según sea necesario.
    Me.ClientesTableAdapter.Fill(Me.Database01DataSet.Clientes)

    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    REM * * * Salir del Modulo * * *
    Close()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    REM * * * Agregar Cliente Nuevo * * *
    CLVCLITextBox.Focus()
    Me.ClientesBindingSource.AddNew()

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    REM * * * Borrar Registro Actual * * *
    If MessageBox.Show(«Desea Eliminar el Cliente seleccionado? «, «xxx») Then
    Me.ClientesBindingSource.RemoveCurrent()
    Me.ClientesBindingSource.EndEdit()

    End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    REM * * * Grabar el Registro Actual * * *
    Me.ClientesTableAdapter.Update(Me.Database01DataSet.Clientes)
    MessageBox.Show(«Nuevo Cliente Grabado «, «xxx»)

    End Sub

    Private Sub ULVCLIDateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ULVCLIDateTimePicker.ValueChanged

    End Sub
    End Class

    Agradesco de antemano tu apreciable ayuda, y si no es abusar tendras algun pequeño programa ejemplo en el cual realmente se graben los datos en la SQL con VB 2008

    SALUDOS
    «alberto_a_b@yahoo.com.mx»

    Responder
  12. jorge dice:
    21 septiembre, 2010 a las 9:07 pm

    Alberto,

    ¿podrías dejarme el código en un proyecto junto a una base de datos de prueba y en algún lugar (zip, rar) para poder testearlo?.

    Intentaré hacer lo que pueda.

    Un saludo,

    Jorge

    Responder
  13. anonymous dice:
    24 noviembre, 2010 a las 9:59 pm

    lkfg nbjrypoh´cv´kj fkghrpojlf tihpp9lkh nkv,bnmñltg khnlkjh kjhoiyfdflk uo ukj igiu jh oijñlkj`p9uioy8ty

    Responder
  14. anonymous dice:
    10 agosto, 2011 a las 8:16 pm

    hola jorge por que me sale el error en contexto me dece que es incorrecta
    Private contexto As New Futbol2006DataContext()
    seria que debo agregar algo disculpa es que soy nueva en este tipi de conexion

    Responder
  15. anonymous dice:
    18 agosto, 2011 a las 2:11 am

    saludos
    yo tambien hice uno de esos programas que hay en el internet
    mi problema esta en que cuando llevo mi aplicacion a otros pc’s me sale un error indicando que no encuentra al servidor ej: C:UsersomarDocumentsVisual Studio 2010ProjectsProyecto de CostosProyecto de CostosbinDebugdatabase1.mdf

    y quisiera saber si hay como no tener esa dependencia con el servidor asi como pasa con access de Microsoft offices

    Responder

Responder a anonymous Cancelar respuesta

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

← Previous Post Next Post →

Jorge Serrano

MVP Reconnect


Donaciones
Donation

Entradas recientes

  • Go – Constants
  • Go – Tipos de Datos
  • Go – Variables
  • Hello Go-rld!
  • Introducción a Go o Golang
  • JSON Patch en ASP.NET Core 5 Web API
  • Null Checking en C#
  • ¿Porqué mi página web por defecto de ASP.NET Core no se vé en mi Azure Web App y me da un 404?
  • .NET 5 lanzado oficialmente – detalles y consideraciones
  • Configurar el Pipeline de Azure DevOps para compilar proyectos .NET 5

Categorías

  • .NET 5
  • .NET Core
  • .NET Core 3.0
  • .NET Core 3.1
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5
  • .NET Framework 4.0
  • .NET Framework 4.5
  • .NET Framework 4.6
  • .NET Framework 4.7
  • .NET Framework 4.8
  • .NET Standard 2.0
  • .NET Standard 2.1
  • AMQP
  • Android
  • Angular
  • API REST
  • Apple
  • Apple iOS
  • Apple macOs
  • Arquitectura
  • ASP.NET
  • ASP.NET Core
  • ASP.NET Core 3
  • ASP.NET Core 5
  • AWS
  • Azure App Service
  • Azure Application Insights
  • Azure Cosmos DB
  • Azure Database Migration Service
  • Azure Databricks
  • Azure DevOps
  • Azure Event Grid
  • Azure Functions
  • Azure IoT
  • Azure Portal
  • Azure PowerShell
  • Azure Queue Storage
  • Azure SQL
  • Azure Storage
  • Azure Virtual Datacenter
  • Azure WebApps
  • Big Data
  • Bing
  • Blazor
  • Blog
  • Bots
  • C#
  • C# 7.0
  • C# 7.1
  • C# 7.2
  • C# 7.3
  • C# 8.0
  • C# 9.0
  • Channel 9
  • Codeplex
  • Codespaces
  • Containers
  • Debugging
  • DevOps
  • Docker
  • Electron
  • Entity Framework
  • Entity Framework Core
  • Entity Framework Core 3.0
  • Entity Framework Core 5
  • Eventos
  • F#
  • FaaS
  • FeatureFlags
  • FeatureToggles
  • Feeds
  • Fluent Assertions
  • General
  • GIMP
  • Git
  • GitHub
  • Go
  • Google
  • Google Analytics
  • Gradle
  • gRPC
  • GSA
  • Historia de la Informática
  • HoloLens
  • HtmlAgilityPack
  • IdentityServer4
  • Inkscape
  • Ionic
  • iOS
  • IoT
  • Java
  • JavaScript
  • JDBC
  • JSON
  • Kubernetes
  • Lenguajes de Programación
  • Libros y Cursos
  • LINQ
  • Linux
  • LiteDB
  • Machine Learning
  • macOS
  • Microservices
  • Microsoft
  • Microsoft .NET Framework 4.5
  • Microsoft 365
  • Microsoft Azure
  • Microsoft Build
  • Microsoft Ignite
  • Microsoft Learn
  • Microsoft Orleans
  • Microsoft Surface Go
  • Microsoft Teams
  • ML.NET
  • MQTT
  • MRO
  • MS-DOS
  • MsCoders Madrid
  • MVP
  • NancyFx
  • Node.js
  • NoSQL
  • NuGet
  • NUnit
  • OData
  • ODP.NET Core
  • Office 2007
  • Office 2010
  • Office 2013
  • Office 2016
  • Office 2019
  • Office 365
  • Open Source
  • Open XML SDK
  • Opinión
  • Orchard CMS
  • OT
  • PaaS
  • Patterns
  • PdfSharpCore
  • Performance
  • PHP
  • Postman
  • Power BI
  • PowerShell
  • PowerShell Core
  • Productividad
  • Project Server 2019
  • R
  • Rendimiento
  • Scala
  • Scraper
  • Security
  • Serverless
  • Service Fabric
  • SharePoint Server 2019
  • SignalR
  • Sin categoría
  • Sistemas Distribuidos
  • Skype
  • Skype for Business Server 2019
  • Small Basic Online
  • SQL Server 2005
  • SQL Server 2008
  • SQL Server 2012
  • SQL Server 2014
  • SQL Server 2016
  • SQL Server 2017
  • SQL Server 2019
  • STOMP
  • Swagger
  • Testing
  • TFS 2017
  • TFS 2018
  • Tools
  • TypeScript
  • Unity
  • UWP
  • UX
  • Visio
  • Visual Basic
  • Visual Studio 2010
  • Visual Studio 2012
  • Visual Studio 2013
  • Visual Studio 2015
  • Visual Studio 2017
  • Visual Studio 2017 for Mac
  • Visual Studio 2019
  • Visual Studio 2019 for Mac
  • Visual Studio App Center
  • Visual Studio Code
  • Visual Studio IntelliCode
  • Visual Studio Live Share
  • Visual Studio Live Share Audio
  • Visual Studio Online
  • VS Anywhere
  • Vue.js
  • Web API
  • WebAssembly
  • WinDbg
  • Windows
  • Windows 10
  • Windows Compatibility Pack
  • Windows Phone 10
  • Windows Phone 7
  • Windows Phone 8
  • Windows Server 2008
  • Windows Server 2012
  • Windows Server 2016
  • Windows Server 2019
  • Windows Service
  • WinForms
  • WinUI
  • WPF
  • Xamarin
  • Xbox
  • Xcode
  • Xiaomi Mi Band 2
  • xUnit
  • YAML

Archivos

  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 2020
  • agosto 2020
  • julio 2020
  • junio 2020
  • mayo 2020
  • abril 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • diciembre 2019
  • noviembre 2019
  • octubre 2019
  • septiembre 2019
  • agosto 2019
  • julio 2019
  • junio 2019
  • mayo 2019
  • abril 2019
  • marzo 2019
  • febrero 2019
  • enero 2019
  • diciembre 2018
  • noviembre 2018
  • octubre 2018
  • septiembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • abril 2018
  • marzo 2018
  • febrero 2018
  • enero 2018
  • diciembre 2017
  • noviembre 2017
  • octubre 2017
  • septiembre 2017
  • agosto 2017
  • julio 2017
  • junio 2017
  • febrero 2015
  • octubre 2014
  • junio 2014
  • marzo 2014
  • febrero 2014
  • enero 2014
  • diciembre 2013
  • septiembre 2013
  • agosto 2013
  • julio 2013
  • junio 2013
  • abril 2013
  • febrero 2013
  • enero 2013
  • diciembre 2012
  • noviembre 2012
  • septiembre 2012
  • agosto 2012
  • junio 2012
  • mayo 2012
  • abril 2012
  • marzo 2012
  • febrero 2012
  • enero 2012
  • diciembre 2011
  • noviembre 2011
  • octubre 2011
  • septiembre 2011
  • agosto 2011
  • julio 2011
  • junio 2011
  • mayo 2011
  • abril 2011
  • marzo 2011
  • enero 2011
  • diciembre 2010
  • noviembre 2010
  • octubre 2010
  • septiembre 2010
  • agosto 2010
  • julio 2010
  • junio 2010
  • mayo 2010
  • abril 2010
  • marzo 2010
  • febrero 2010
  • enero 2010
  • diciembre 2009
  • noviembre 2009
  • octubre 2009
  • septiembre 2009
  • agosto 2009
  • julio 2009
  • junio 2009
  • mayo 2009
  • abril 2009
  • marzo 2009
  • febrero 2009
  • enero 2009
  • diciembre 2008
  • noviembre 2008
  • octubre 2008
  • septiembre 2008
  • agosto 2008
  • julio 2008
  • junio 2008
  • mayo 2008
  • abril 2008
  • marzo 2008
  • febrero 2008
  • enero 2008
  • diciembre 2007
  • noviembre 2007
  • octubre 2007
  • septiembre 2007
  • agosto 2007
  • julio 2007
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007
  • febrero 2007
  • enero 2007
  • diciembre 2006
  • noviembre 2006
  • octubre 2006
  • septiembre 2006
  • agosto 2006
  • julio 2006
  • junio 2006
  • mayo 2006
About This Site

A cras tincidunt, ut tellus et. Gravida scel ipsum sed iaculis, nunc non nam. Placerat sed phase llus, purus purus elit.

Archives Widget
  • January 2010
  • December 2009
  • November 2009
  • October 2009
Categories
  • Entertainment
  • Technology
  • Sports & Recreation
  • Jobs & Lifestyle
Search
  • twitter

Powered by WordPress  |  Business Directory by InkThemes.

This site uses cookies: Find out more.