¿Aún no tienes una cuenta? Crea una ahora y accede a tus listas favoritas, tu histórico de cuentas y muchas más cosas...
Pedidos y atención al cliente
PARTICULARES: 963 392 051 - FAX: 963 615 480 / LIBRERÍAS: 963 600 598 - FAX: 963 694 151
726 págs. / Rústica / Castellano / Libro
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.
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<T>
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
Clase Expression
Tipos de nodos en árboles de expresión
Enumeración ExpressionType
Clases derivadas de Expression
Guía práctica sobre nodos
LambdaExpression y ParameterExpression
BinaryExpression
ConstantExpression
MethodCallExpression
ConditionalExpression
InvocationExpression
Visitar un árbol de expresiones
Un patrón de visita alternativo
Creación de un árbol de expresiones de forma dinámica
¿Cómo genera el compilador un árbol de expresiones?
Combinar árboles de expresiones existentes
Composición dinámica de un árbol de expresiones
Resumen
12. Ampliar LINQ
Operadores personalizados
Especialización de operadores existentes
Prácticas no recomendables
Límites de la especialización
Creación de un proveedor de LINQ personalizado
La interfaz IQueryable
Conversión de IEnumerable a IQueryable (y a la inversa)
Análisis de IQueryable y IQueryProvider
Redacción de FlightQueryProvider
La clase FlightStatusService
Implementación de IQueryable en FlightQuery
Implementación de IQueryProvider en IFlightProvider
Implementación de ExpressionVisitor en FlightQueryTranslator
Uso de FlightQueryProvider
Análisis coste/beneficio del uso de proveedores LINQ personalizados
Resumen
13. Parallel LINQ
Parallels Extensions y .NET Framework
Métodos Parallel.For y Parallel.For.Each
Método Do
Clase Task
Clase Future<T>
Aspectos relacionados con la concurrencia
Uso de PLINQ
Hilos utilizados en PLINQ
Implementación de PLINQ
Utilizar PLINQ
Procesado de tubería
Procesado Stop-and-go
Enumeración invertida
Efectos secundarios del uso de ejecución paralela
Orden de resultados
Modificación en los datos durante la ejecución
Procesado de los resultados de la consulta
Gestión de errores en PLINQ
PLINQ y otras implementaciones de LINQ
Resumen
14. Otras implementaciones de LINQ
Acceso a bases de datos
Acceso a datos sin una base de datos
Modelos de dominio en LINQ to Entity
LINQ to Services
LINQ para ingenieros de sistemas
LINQ dinámico
Otras herramientas y mejoras de LINQ
Resumen
Parte V. LINQ aplicado
15. LINQ en una aplicación multinivel
Características de una aplicación multinivel
LINQ to SQL en una solución de dos niveles
LINQ en una solución de n niveles
LINQ to SQL como sustituto de la capa de acceso a datos
Abstracción de LINQ to XML con mapeado externo de XML
Uso de LINQ to SQL a través de abstracción real
LINQ to XML como capa de datos
LINQ to Entities como capa de datos
LINQ en el nivel de tratamiento
LINQ to Objects para redactar mejor código
IQueryable<T> frente a IEnumerable<T>
Identificar la unidad de trabajo adecuada
Manejo de transacciones
Concurrencia y seguridad en hilos
Resumen
16. LINQ y ASP.NET
ASP.NET 3.5
ListView
Vinculación de datos con ListView
DataPager
LinqDataSource
Paginado de datos con LinqDataSource y DataPager
Gestión de modificación de datos con LinqDataSource
Selecciones personalizadas con LinqDataSource
Uso de LinqDataSource con tipos personalizados
Vinculación con consultas LINQ
Resumen
17. LINQ y WPF/Silverlight
Uso de LINQ como WPF
Vinculación de entidades y propiedades
Vinculación de colecciones de entidades
Uso de LINQ en Silverlight
Resumen
18. LINQ y Windows Communication Foundation
Introducción a WCF
Contratos y servicios WCF
Contratos orientados a servicios
Alojamiento de servicios y puntos finales
Consumidores de servicios
WCF y LINQ to SQL
LINQ to SQL Entities y serialización
Publicación de entidades LINQ to SQL con WCF
Consumo de entidades LINQ to SQL con WCF
LINQ to Entities y WCF
Serialización de expresiones de consulta
Resumen
Parte VI. Apéndices
Apéndice A. ADO.NET Entity Framework
Enfoque estándar de ADO.NET
Abstracción a partir de la capa física
Modelado de entidades de datos
Archivos del modelo de entidades de datos
Asistente y diseñador del modelo de entidades de datos
Herramienta de generación del modelo de entidades de datos
Definición y normas del modelo de entidades de datos
Ejecución de consultas sobre entidades con ADO.NET
Ejecución de consultas sobre ADO.NET Entities con LINQ
Gestión de datos con Object Services
Gestión de identidad de objetos
Operaciones transaccionales
Entidades implementadas de forma manual
LINQ to SQL y ADO.NET Entity Framework
Resumen
Apéndice B. C# 3.0: Nuevas características
C# 2.0
Genéricos
Delegados
Métodos anónimos
Enumeradores y el comando Yield
Características de C# 3.0
Propiedades implementadas de forma automática
Inferencia de tipos local
Expresiones lambda
Métodos de extensión
Expresiones de inicialización de objetos
Tipos anónimos
Los tipos anónimos son inmutables
Expresiones de consulta
Métodos parciales
Resumen
Apéndice C. Visual Basic 2008: Nuevas características
Visual Basic 2008 y tipos anulables
Operador If
Características de Visual Basic 2008 correspondientes a las de C# 3.0
Inferencia de tipos locales
Métodos de extensión
Expresiones de inicialización de objetos
Tipos anónimos
Los tipos anónimos no son inmutables en Visual Basic 2008
Expresiones de consulta
Expresiones lamdba
Cierres
Métodos parciales
Características de Visual Basic 2008 sin equivalente en C# 3.0
Soporte para XML
Literales XML
Vinculado tardío sobre XML
Delegados relajados
Características de C# sin equivalente en Visual Basic 2008
Yield
Métodos anónimos
Resumen
??ndice alfabético