Detalle del libro
Ver Índice
Agradecimientos
Sobre los autores
Prólogo
Prefacio
Introducción
Sobre este libro
Requisitos del sistema
Convenciones
Código fuente
Parte I. Fundamentos de LINQ
1. Introducción a LINQ
¿Qué es LINQ?
¿Por qué necesitamos LINQ?
Cómo funciona LINQ
Modelo relacional vs. modelo jerárquico/en red
Manejo de XML
Integración de lenguaje
Programación declarativa
Comprobación de tipos
Transparencia en diferentes sistemas de tipos
Implementaciones de LINQ
LINQ to Objects
LINQ to ADO.NET
LINQ to XML
Resumen
2. Fundamentos de la sintaxis de LINQ
Consultas LINQ
Sintaxis de consulta
Sintaxis completa de consulta
Comandos de consulta
From
Where
Select
Group e Into
Orderby
Join
Let
Comandos adicionales de Visual Basic 2008
Evaluación diferida de consultas y resolución de métodos de extensión
Evaluación diferida de consultas
Resolución de métodos de extensión
Reflexiones finales sobre las consultas de LINQ
Expresiones de consulta degenerada
Manejo de excepciones
Resumen
3. LINQ to Objects
Operadores de consulta
Where
Operadores de proyección
Select
SelectMany
Operadores de ordenamiento
OrderBy y OrderByDescending
ThenBy y ThenByDescending
Reverse
Operadores de agrupación
Operadores de combinación
Join
GroupJoin
Operadores de conjunto
Distinct
Union, Intersect y Except
Operadores agregados
Count y LongCount
Sum
Min y Max
Average
Aggregate
Operadores agregados en Visual Basic 2008
Operadores de generación
Range
Repeat
Empty
Operadores de cuantificación
Any
All
Contains
Operadores de partición
Take
TakeWhile
Skip y SkipWhile
Operadores de elementos
First
FirstOrDefault
Last y LastOrDefault
Single
SingleOrDefault
ElementAt y ElementAtOrDefault
DefaultIfEmpty
Otros operadores
Concat
SequenceEqual
Operadores de conversión
AsEnumerable
ToArray y ToList
ToDictionary
ToLookup
OfType y Cast
Resumen
Parte II. LINQ a datos relacionales
4. LINQ to SQL: Ejecución de consultas
Entidades en LINQ to SQL
Mapeado externo
Modelado de datos
DataContext
Clases entidad
Herencia de entidades
Identidad única de objetos
Restricción de entidades
Asociación entre entidades
EntityRef
EntitySet
Consistencia de gráficos
Modelo relacional frente a Modelo jerárquico
Ejecución de consultas sobre datos
Proyecciones
Procedimientos almacenados y funciones definidas por el usuario
Procedimientos almacenados
Funciones definidas por el usuario
Consultas compiladas
Diferentes enfoques para la ejecución de consultas sobre datos
Consultas directas
Carga diferida de entidades
Carga diferida de propiedades
Acceso a DataContext de sólo lectura
Limitaciones de LINQ to SQL
Operadores agregados
Operadores de partición
Operadores de elementos
Métodos de cadena
Métodos DateTime
Funcionalidades de SQL no soportadas
Pensando en LINQ to SQL
IN/EXISTS
Reducción de consultas SQL
Combinación de código .NET y consultas SQL
Resumen
5. LINQ to SQL: Gestión de datos
Operaciones CRUD y CUD
Actualización de entidades
Actualizar y eliminar en cascada
Estados de la entidad
Sincronización de entidades
Actualizaciones de la base de datos
Anular SubmitChanges
Personalización de Insert, Update y Delete
Procedimientos almacenados
Intercepción de Insert, Update y Delete
Interacción con la base de datos
Operaciones concurrentes
Atributos de columna para el control de concurrencia
Transacciones
Excepciones
DataContext
Lectura de la base de datos
Escritura en la base de datos
Manejo de entidades
Bases de datos y entidades
Uso de atributos de entidades para mantener relaciones válidas
Derivación de clases entidad
Adjuntar entidades
Serialización de entidades
Attach
Vinculación de metadatos
Archivo XML externo de mapeado
Creación de una base de datos a partir de entidades
Creación de entidades desde una base de datos
Diferencias entre sistemas .NET y SQL
Resumen
6. Herramientas en LINQ to SQL
Tipos de archivo
DBML (Lenguaje de marcado de bases de datos)
Código fuente C# y Visual Basic
Archivo XML externo de mapeado
Creación de archivos en LINQ to SQL
Creamos un archivo DBML a partir de una base de datos existente
Generación del código fuente de una entidad con mapeado basado en atributos
Generación del código fuente de una entidad con un archivo XML externo de mapeado
Creación de un archivo DBML desde cero
SQLMetal
Creación de un archivo DBML a partir de una base de datos
Creación de un archivo de mapeado y de código fuente a partir de una base de datos
Generación de código fuente y de un archivo de mapeado a partir de un archivo DBML
Object Relational Designer
Propiedades DataContext
Clase entidad
Miembros de entidad
Asociación entre entidades
Relaciones uno a uno
Herencia de entidades
Procedimientos almacenados y funciones definidas por el usuario
Tipo devuelto por una función de datos
Mapeado de operaciones Delete, Insert y Update
Vistas y soporte de esquemas
Resumen
7. LINQ to DataSet
Introducción a LINQ to DataSet
Uso de LINQ para cargar DataSet
Carga de un DataSet usando LINQ to SQL
Carga de datos con LINQ to DataSet
Uso de LINQ para ejecutar una consulta sobre un DataSet
DataTable.AsEnumerable
Creación de instancias de DataView con LINQ
Uso de LINQ para ejecutar una consulta sobre un DataSet con tipos
Acceso a datos en DataSets sin tipos
Comparación de DataRow
Resumen
8. LINQ to Entities
Ejecución de consultas sobre un modelo de datos entidad
Introducción
Expresiones de consulta
Gestión de datos
Motor de consultas
Ejecución de consultas
Más información sobre ObjectQuery
Consultas compiladas
LINQ to SQL y LINQ to Entities
Resumen
Parte III. LINQ y XML
9. LINQ to XML: Gestión de información XML
Introducción a LINQ to XML
Programación en LINQ to XML
XDocument
XElement
XAttribute
XNode
XName y XNamespace
Otras clases X*
XStreamingElement
Anotaciones y XObject
Lectura, transferencia y modificación de XML
Resumen
10. LINQ to XML: Ejecución de consultas sobre nodos
Ejecución de consultas sobre XML
Attribute, Attributes
Element, Elements
Métodos de extensión XPath Axes
Métodos de selección XNode
InDocumentOrder
Evaluación diferida de consultas
Consultas de LINQ sobre XML
Ejecución de consultas XML de forma eficiente para crear entidades
Transformación de XML con LINQ to XML
Soporte para XSD y para validación de nodos con tipos
Soporte para XPath y System.Xml.XPath
Seguridad en LINQ to XML
Serialización en LINQ to XML
Resumen
Parte IV. LINQ Avanzado
11. Árboles de expresiones
Expresiones lambda
¿Qué es un árbol de expresiones?
Creación de un árbol de expresiones
Encapsulación
Inmutabilidad y modificación
Análisis de un árbol de expresiones
Crear aplicaciones de Internet resulta complejo. El principal problema es la diferencia que existe entre el lenguaje con el que se escriben las aplicaciones y el que se emplea para acceder a los datos.
No obstante, la tecnología orientada a objetos ha conseguido integrar la información no nativa.
En este contexto, un proyecto como LINQ (Lenguage Integrated Query), que añade a .NET Framework facilidades de consulta de propósito general aplicables a las bases de datos relacionales, XML y otras fuentes de información, reduce la complejidad de la programación.
Este libro trata en profundidad las complejidades de LINQ. En lugar de atravesar las sintaxis del lenguaje para acceder a las fuentes de datos, los desarrolladores aprenden a escribir las preguntas de forma nativa en Visual C # o Visual Basic.
Conozca la arquitectura de LINQ y las nuevas características de lenguaje, tanto en C # como en Visual Basic, y desarrolle ejemplos de código en ambos idiomas.