Ir al contenido principal

OPERACIONES SQL EN LINQ


OPERACIONES SQL EN LINQ

Antes de realizar cualquier operación en la base de datos con Linq se tiene que declarar el DataContext Generado por Linq To SQL de la siguiente manera:
nombreDataContext  variable = new nombreDataContext ();
Por ejemplo se generó una clase Linq To SQL llamado dclsTienda, la instancia en código seria la siguiente:

               dclsTiendaDataContext con = new dclsTiendaDataContext();

  1. SELECCIÓN

  2. Las consultas select son muy similares a SQL solo que en LINQ se realiza de forma invertida como se muestra a continuación:

    var clie = (from cl in con.cliente select cl);

    Donde:
    clie, cl: Variable cualquiera.
    con.cliente: nombre del Data Contex seguido por el nombre de la tabla a seleccionar

    En la parte final de la consulta select se especificó solo el alias esto a razón de que se seleccionara todos los campos de la tabla, pero también es posible seleccionar solo los campos específicos que desee, como se muestra a continuación:

    var clie = (from cl in con.cliente
    select new { cl.Cod_cliente, cl.Nombre_cliente, cl.Pais });


  3. FILTRO WHERE
  4. El filtro hace que la consulta devuelva sólo los elementos para los que la expresión es verdadera. El resultado se genera mediante la cláusula where como se muestra en el siguiente ejemplo:

    var cliente = (from cl in con.cliente
    where cl.Pais=="Peru" && cl.Ciudad=="Lima"
    select cl);

    Operadores comunes: 

    SQL
    LINQ
    = ==
    AND &&
    OR ||

  5. JOINS

  6. La cláusula join sirve para asociar elementos de secuencias de origen diferentes que no tienen ninguna relación directa en el modelo de objetos. El único requisito es que los elementos de cada origen compartan algún valor en común para el que se pueda comparar la igualdad.
    Una cláusula join realiza una combinación de igualdad. En otras palabras, las coincidencias sólo se pueden basar en la igualdad de dos claves. No se admiten otros tipos de comparaciones, como "mayor que" o "distinto de". Para que quede claro que todas las combinaciones son combinaciones de igualdad, la cláusula join utiliza la palabra clave equals en lugar del operador ==.

    var clie = (from cl in con.cliente
    join cp in con.comprobante_pago
    on cl.Cod_cliente equals cp.Cod_cliente
    select new { cl, cp });

    En la parte del comando on indica el campo en común que tienen ambas tablas. 
    En la parte de selección especificamos los campos a mostrar de cada una de las tablas unidas.
    De la misma forma puede añadir cuantos join considere necesario. 
    Para realizar operaciones de unión (join) con más de una clave en comun. Esto se logra utilizando una clave compuesta. Una clave compuesta se crea como un tipo anónimo o un tipo con nombre que incluye los valores con los que se desea comparar. Los nombres de las propiedades, y el orden en el que ocurren, deben ser idénticos en cada clave.

    var clie = (from p in con.pedido
    join c in con.cliente
    on new {codigo = p.Cod_cliente, empleado = p.Cod_empleado}
    equals new { codigo = c.Cod_cliente, empleado = 1}
    select new { c.Nombre_cliente, p.Monto_pedido, p.Fecha_pedido });


  7. CARGAR A UN GRID VIEW

  8. La forma es muy simple solo basta realizar la consulta y asignarle a la lista el valor del Data Source, como se muestra a continuación:

    var clie = (from cl in con.cliente
    select new { cl.Cod_cliente, cl.Nombre_cliente, cl.Pais });
    GridView1.DataSource = clie.ToList();
    GridView1.DataBind();


  9. INSERCIÓN
  10. Las operaciones Insert se realiza agregando datos en el modelo de objetos. De forma predeterminada, LINQ to SQL convierte estas acciones a SQL y envía los cambios a la base de datos.


    cliente cl = new cliente();
    cl.Cod_cliente = 271;
    cl.Nombre_cliente = "Luis Catacora";
    cl.Pais = "Peru";
    cl.Telefono = "952229445";
    con.cliente.InsertOnSubmit(cl);
    con.SubmitChanges();


  11. ACTUALIZACIÓN

  12. Las operaciones Update se realizan cambiando los datos del modelo de objetos. De forma predeterminada, LINQ to SQL convierte estas acciones a SQL y envía los cambios a la base de datos.


    var cl = (from c in con.cliente where c.Cod_cliente == 271 select c).SingleOrDefault();
    cl.Nombre_cliente = "Luis Catacora Murillo";
    cl.Ciudad = "Tacna";
    cl.Direccion_1 = "Mi casa Nº 666";
    con.SubmitChanges();

    Otra forma de realizar lo mismo es la siguiente:

    var cl = con.cliente.Where(w => w.Cod_cliente == 271).SingleOrDefault();      
    cl.Nombre_cliente = "Luis Catacora Murillo";
    cl.Ciudad = "Tacna";
    cl.Direccion_1 = "Mi casa Nº 666";
    con.SubmitChanges();


  1. ELIMINACIÓN

  2. Las operaciones Delete quitando objetos en el modelo de objetos. De forma predeterminada, LINQ to SQL convierte estas acciones a SQL y envía los cambios a la base de datos.
    El siguiente código muestra como eliminar al cliente con el código 271:


    var cl = (from c in con.cliente
    where c.Cod_cliente == 271
    select c).ToList();
    con.cliente.DeleteAllOnSubmit(cl);
    con.SubmitChanges();


  3. LLAMADA A PROCEDIMIENTOS ALMACENADOS

  4. La forma de llamar a un procedimiento almacenado es realmente sencillo, solo basta con escribir en la variable de DataContext seguido por el nombre del procedimiento almacenado como se muestra a continuación:

    var alu =con.SP_EDITAR_ALUMNO(1, "Luis Catacora Murillo");


  5. PAGINACIÓN DEL LADO DEL SERVIDOR

  6. Para paginar usando LINQ, para devolver valores saltándose unos resultados, por ejemplo de una consulta que devuelve 270 valores, quiero que muestre los valores del 6 al 15, con lo que tendremos que usar  .Skip(5).Take(10) es decir, sáltate 5 valores y muestra 10 valores.

    var clie = (from cl in con.cliente
    select new { cl.Cod_cliente, cl.Nombre_cliente, cl.Pais }).Skip(5).Take(10);

    El resultado sería: 

Comentarios

Entradas populares de este blog

SELECTORES CSS3

SELECTORES BÁSICOS SINTAXIS DESCRIPCIÓN elemento[atributo^='valor'] Selecciona todos los elementos que inicien con un valor especificado. elemento[atributo$='valor'] Selecciona todos los elementos que terminen con un valor especificado. elemento[atributo*='valor'] Selecciona todos los elementos que contenga un valor especificado. ESTRUCTURALES Permiten seleccionar elementos basándose en información extra del árbol del documento. Es decir, además de las clases e id podemos seleccionar elementos basándonos en su posición en el documento. SINTAXIS DESCRIPCIÓN elemento:root Selecciona la raíz del documento. elemento:nth-child(n) Selecciona elementos que son el n-ésimo hijo de sus padres elemento:nth-last-child(n) Selecciona elementos que son el n-ésimo hijo de sus p...

CREAR UNA CLASE LINQ TO SQL

        CREAR UNA CLASE LINQ TO SQL Visual Studio viene con un diseñador LINQ to SQL que nos aporta una forma fácil de modelar y visualizar una base de datos como un modelo de objeto. Usando ese diseñador LINQ to SQL puede crear fácilmente una representación de la base de datos sin la necesidad de codificar: 1.     Para la creación de la clase de LINQ to SQL seleccione el proyecto y realice un clic derecho > Agregar > Nuevo elemento. En la ventana seleccione Datos > Clase de LINQ to SQL, asígnele un nombre y presione el botón Agregar. 2.     Después de crear la clase LINQ to SQL observara en el explorar de soluciones un nuevo objeto con la extensión .dbml, esta clase representa el modelo LINQ. Para modificar o actualizar el modelo presione doble clic doble sobre ella. 3.     Una vez generado la clase LINQ to SQL el paso siguiente es conectarla a la base de datos SQL SERVER 2...