Crear una aplicación Web desde Cero (VB y CSharp)- Part III – Consultas con LINQ


Por cuestiones de tiempo este punto se tratara con LINQ para así mostrarle lo último en tecnología ya que se nos aproxima VS2010 y hay muchas cosas más interesante que se debería mostrar, tranquilos también daré algunos tips de cómo se puede realizar a la manera de Visual Studio 2005 y versiones anteriores 🙂

LINQ (Lenguage INtegrated Query), es una tecnología bastante interesante en ella podemos establecer consultas de manera directa a la base de datos partiendo de un simple query, debemos tener en cuenta que no solo base de datos podemos hacer esto si no también a objetos (LINQ to Objects), XML (LINQ to XML), Entidades y otros manejadores (LINQ to ADO.net), por ello LINQ se fortalece cada vez mas permitiendo tener una especie de lenguaje único de consulta para las diferentes formas de obtención de datos.

La definición de la Librería MSDN lo define de esta manera: Language-Integrated Query (LINQ) es un conjunto de características en Visual Studio 2008 que agrega eficaces capacidades de consulta a la sintaxis de los lenguajes C# y Visual Basic. LINQ incluye patrones estándar y de fácil aprendizaje para consultar y actualizar datos, y su tecnología se puede extender para utilizar potencialmente cualquier tipo de almacén de datos. Visual Studio 2008 incluye ensamblados de proveedores para LINQ que habilitan el uso de LINQ con colecciones de .NET Framework, bases de datos de SQL Server, conjuntos de datos de ADO.NET y documentos XML.”

Como hemos venido trabajando en el este tutorial vamos a agregar a nuestro sitio web un nuevo Elemento->Clases de LINQ to SQL el cual lo he llamado dcAdventureWorks.dbml debido a que estaremos utilizando la base de datos AdventureWorks así como resalto en la siguiente imagen.

DataClases

Luego de dar aceptar nos debe aparecer la siguiente pregunta al cual le daremos a la Opción SI.

DataClases-Pregunta

Luego nos saldrá un espacio en blanco donde nos pide ver el Explorador de Servidores o el cuadro de herramientas y así poder arrastrar los objetos (que para nuestro caso serian las tablas de la base de datos AdventureWorks) que deseamos ver en nuestro DataClases por ello seleccionaremos Explorador de Servidores y en el deben aparecer listado los Servidores de base de datos que se encuentren configurado de otras aplicaciones J de estar vacía que es la forma más tradicional de verlo entonces haremos los siguientes pasos para visualizar nuestra base de datos.

1. Seleccionaremos el icono amarillo con forma de base de datos y un + en la parte superior como se indica en la imagen siguiente, esto es para conectarnos al servidor de base de datos.

tablas

2. Aparecerá un cuadro como muchas maneras de conectarnos a la base de datos y por ello debemos seleccionar la siguiente. Si es de su preferencia puede dejar la casilla “Utilizar siempre esta selección” por si siempre utilizara esa manera para conectarse a una fuente de datos.

motores

3. Si se ha equivocado al momento de seleccionar el Origen de datos (Paso anterior) puede reajustar la selección con darle al botón Cambiar (ver la siguiente imagen), se la selección es la correcta usted debe indicar el nombre del servidor de SQL Server donde está la base de datos a utilizar en mi caso estoy usando un Motor de SQL Server 2005 Developer Editions y por ello mi Nombre servidor es (local)\SQL2005 en sus casos si está utilizando la versión Express seria de la siguiente manera (local)\SQLExpress, luego según las características que hallas definido al momento de instalar el servidor de base de datos pudieras usar una autenticación de modo Windows o de Modo SQL Server y de allí puedas seleccionar tu base de datos.

Motor

Nota: por si no sabes quién es (local) vendría siendo tu maquina por lo que en vez de usar (local) pudieras utilizar el nombre de tu Maquina, el \ServidorSQL seria la instancia donde fue instalado el servidor de base de datos, es decir seria esta nomemblecatura: {TUMAQUINA\INSTANCIA_SERVIDOR_SQL}. Te recomiendo hacer una prueba de conexión antes de darle aceptar para validar que te puedes conectar sin problemas.

4. Ahora seleccionaremos todas las tablas de la base de datos o sencillamente podemos usar las tablas que usaremos para el tutorial y luego de seleccionarlas la vamos arrastrando al DataClases donde las tablas son StateProvince y CountryRegion.

Nota: Fíjense la sección remarcada, allí arrastraríamos los StoreProcedures y Funciones que estén definidos en la base de datos lo cual en código podremos invocarlos como Métodos, mientras las tablas la invocaremos como Clases.

Ya con esos puntos podemos empezar a lanzar código J, pero antes de empezar debo explicarle como es la sintaxis de LINQ para que así puedan seguirme, sé que es mucho bla bla bla pero créanme es lo correcto. La sintaxis tradicional y quizás la más utilizada de LINQ es la siguiente:

Linq

La forma de trabajar con LINQ es englobando la consulta y almacenando todo en una variable de tipo “var” (en C# y en VB es DIM sin la asignación de tipo de datos), veamos como se ve lo mostrado en la imagen anterior en código:

 

C#:

var consulta = from country in db.CountryRegion
               select country;

VB:

Dim consulta = From country In db.CountryRegion Select country

Lo que equivale a una consulta al estilo SQL:


Select * From Person.CountryRegion

Si lo ven no es tan difícil al contrario nos facilita el poder manejar objetos, xml y otros fuentes de datos basándonos en un solo esquema, facilitándonos y/o ahorrándonos el tener que aprender cómo obtener los datos y cuál sería su sintaxis J.

Como si eso no fuese todo también podemos hacer consultas a la base de datos como si fuesen métodos así como se muestra en el ejemplo siguiente:

C#:


var consulta = db.CountryRegion;//.Select(c => new { c.Name, c.StateProvince });

VB:

Dim consulta = db.CountryRegion

Es decir que quedaría como la siguiente imagen 🙂

Linq Metodo

Aquí le dejo otra imagen para notar la forma como se realiza las consultas con LINQ con ambos lenguajes (VB y C#) y que el Visual Studio 2008 nos brinda todo el soporte necesario.

Untitled2

Ahora teniendo claro la forma de realizar consultas en LINQ podremos comenzar con agregar una nueva página seleccionando la MasterPage creada en el capitulo anterior y la llamaremos infoCountryRegion.aspx en el solo tendremos el GridView que llamaremos gvCountryRegion que mostrara los datos arrojados de las consultas que realizaremos a la tabla CountryRegion.

En la hoja de código del formulario web (infoCountryRegion.aspx.cs) vamos a crear un método que llamaremos “LlenarGrid()” dicho método nos servirá para llenar el GridView la carga de la pagina en futuras mejoras al gridview como la paginación y selección de filas.

C#

    /// <summary>
    /// Metodo que usaremos para extaer la informacion de la Base de Datos y llenar el GridView
    /// </summary>
    private void LlenarGrid()
    {
        //Obtenemos la cadena de conexion del archivo de configuracion (Web.config)
        //Y lo alamcenamos en una variable de tipo string
        string sConfig = ConfigurationManager.ConnectionStrings["AdventureWorksConnectionString"].ConnectionString;
        //Declaramos un tipo DataContext a partir del DataClases que agregamos al proyect y le
        //pasamos en el parametro la cadena conexion almacenada en la variable sConfig
        dcAdventureWorksDataContext db = new dcAdventureWorksDataContext(sConfig);
        //Se construye la Consulta simple para extraer datos de la Tabla CountryRegion
        var consulta = from c in db.CountryRegion
                       select c;
        //Lugar donde mostraremos la informacion consultada a la tabla
        gvCountryRegion.DataSource = consulta;
        gvCountryRegion.DataBind();
    }

VB

    ''' <summary>
    ''' Metodo que usaremos para extaer la informacion de la Base de Datos y llenar el GridView
    ''' </summary>
    Sub LlenarGrid()
        'Obtenemos la cadena de conexion del archivo de configuracion (Web.config)
        'Y lo alamcenamos en una variable de tipo string
        Dim sConfig As String = ConfigurationManager.ConnectionStrings("AdventureWorksConnectionString").ConnectionString
        'Declaramos un tipo DataContext a partir del DataClases que agregamos al proyect y le
        'pasamos en el parametro la cadena conexion almacenada en la variable sConfig
        Dim db As dcAdventureWorksDataContext = New dcAdventureWorksDataContext(sConfig)
        'Se construye la Consulta simple para extraer datos de la Tabla CountryRegion
        Dim consulta = From country In db.CountryRegion Select country
        'Lugar donde mostraremos la informacion consultada a la tabla
        gvCountryRegion.DataSource = consulta
        gvCountryRegion.DataBind()
    End Sub

Mientras que en el Page_Load de la página escribiremos la invocación del método recién creado colocando un validación de que la Página sea diferente a un PostBack por lo que quedaría así en el siguiente código:

C#

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LlenarGrid();
        }
    }

 

VB

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (IsPostBack = False) Then
            LlenarGrid()
        End If
End Sub

 

 

 

 

 

 

 

 

Hasta el siguiente post que será la continuación de este punto (Consultas)

Post Cruzado con el blog http://geeks.ms/blogs/ajimenez

Anuncios

Un comentario el “Crear una aplicación Web desde Cero (VB y CSharp)- Part III – Consultas con LINQ

  1. Pingback: Trackback

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s