SlideShare una empresa de Scribd logo
Usando LINQ to SQL (1ª Parte) 
43 respuestas 
En los últimos meses he escrito una serie de post que cubrían algunas de las característcias que van a venir con Visual Studio y .NET Framework "Orcas". Aquí tenéis los enlaces: 
 Propiedades automáticas, inicializadores de objectos e inicializadores de colleciones. 
 Métodos de extensión. 
 Expresiones Lambda. 
 Sintaxis de consultas. 
 Tipos Anónimos 
Las características anteriores hacen que la consulta de datos sea un concepto de primera clase. Conocemos a este modelo de programación como "LINQ" - que viene de .NET Language Integrated Query. 
Los desarrolladores pueden usar LINQ con cualquier fuente de datos. Pueden expresar consultas eficientemente en los lenguajes de programación que eligan, opcionalmente transformar/incrustar los resultados de las consultas en el formato que quieran, y entonces manipular fácilmente los resultados. Los lenguajes habilitados para LINQ pueden aportar seguridad de tipos y chequeo en tiempo de compilación el las expresiones de consulta, y desarrollar herramientas que aporten intelisense, debugging, y un gran soporte para refactoring cuando escriban código de LINQ. 
LINQ soporta un modelo de extensibilidad muy rico que facilita la creación de operadores eficientes para fuentes de datos. La versión "Orcas" del .NET Framework viene con librerías que habilitan LINQ sobre objetos, XML y bases de datos. 
¿Qué es LINQ to SQL? 
LINQ to SQL es una implementación de O/RM(object relational mapping, mapeador de objetos relacionales) que viene con la versión "Orcas" del .NET Framework, y nos permite modelar bases de datos relacionales con clases de .NET. Podemos consultar bases de datos con LINQ, así como actualizar/añadir/borrar datos de ellas. 
Modelando bases de datos con LINQ to SQL: 
Visual Studio "Orcas" viene con un diseñador de LINQ to SQL que nos aporta una forma fácil de modelar y visualizar una base de datos como un modelo de objeto de LINQ to SQL. El próximo post cubrirá en más profundidad cómo usar este diseñador (podéis ver este video que hice en Enero para verme construir un modelo LINQ to SQL). 
Usando ese diseñador LINQ to SQL puedo crear fácilmente una representación de la base de datos "Northwind":
El diseño de arriba define cuatro clases: Product, Category, Order y OrderDetail. Las propiedades de cada clase mapean las columnas de cada table en la base de datos. Cada instancia de esa clase representa una fila en las tablas. 
Las flechas entre las cuatro clases de arriba representan las asociaciones/relaciones entre las diferentes entidades. Son típicamente modeladas como relaciones primary-key/foreign-key en la base de datos. La dirección de las flechas en el diseñador indican si la relación es uno-a-uno o uno-a-varios. Se añadiran propiedades fuertemente tipadas a las entidades basándose en esto. Por ejemplo, la clase Category de arriba tiene una relación de uno-a-varios con la clase Product. Esto implica que tendrá una propiedad "Categories" que es una colección de objetos Product con esa categoría. La clase Product entonces tiene una propiedad "Category" que apunta a una instancia de la clase Category representando la categoría a la que pertenece el producto. 
El panel de la derecha del diseñador LINQ to SQL contiene una lista de procedimientos almacenados que interactúan con nuestro modelo de base de datos. En el ejemplo de arriba hemos añadido un SPROC (Procedimiento almacenado) "GetProductsByCategory". Como entrada recibe un categoryID, y devuelve una secuencia de Product como resultado. Veremos cómo llamar a este procedimiento almacenado en un ejemplo. 
Entendiendo la clase DataContext 
Cuando pulsáis el boton "save" del diseñador de LINQ to SQL, Visual Studio generará clases .NET para representar las entidades y las relaciones de la base de datos que hemos modelado. Por cada archivo añadido a nuestra solución por el diseñador LINQ to SQL también se generará una clase DataContext. Esta clase es a traves de la cual realizaremos las consultas a las entidades de nuestra base de datos. Esta clase tendrá propiedades que representarán a cada tabla que hemos modelado, así como métodos para cada procedimiento almacenado que añadamos. 
Por ejemplo, aquí tenéis la clase NorthwindDataContext:
Ejemplos de LINQ to SQL 
Una vez que hemos modelado nuestra base de datos con el diseñador de LINQ to SQL, podemos escribir código fácilmente para trabajar con él. Aquí tenéis unos cuantos ejemplos que muestran tareas comunes con datos: 
1) Consultando Products de la base de datos 
El siguiente código usa una consulta LINQ para obtener una secuencia IEnumerable de objetos Product. Fijáos que este código está consultando a traves de la relación Product/Category para obtener aquellos productos de la categoría "Beverages". 
C#: 
VB: 
2) Actualizando un producto en la base de datos. 
El código siguiente muestra cómo obtener un producto de la base de datos, actualizar su precio, y guardar los cambios en la base de datos: 
C#:
VB: 
Nota: VB en "Orcas" Beta1 no soporta Lambdas aún. Pero en la Beta2 sí -de forma que el código anterior se podrá escribir de una forma más concisa. 
3) Añadir una nueva categoría y dos nuevos productos en la base de datos. 
El siguiente código muestra cómo crear una nueva categoría, y entonces crear dos nuevos productos y asociarlos a la nueva categoría. Los tres son después guardados en la base de datos. 
Fijaos como no necesitamos administrar manualmente las relaciones primarykey/foreignkey. Sólo tenemos que añadir los objetos Product en la colección "Products" de la categoría, y luego añadir el nuevo objeto Category en la colección de "Categories" del DataContext, LINQ to SQL sabrá automáticamente crear las PF/FK necesarias: 
C#: 
4)Borar productos de la base de datos. 
El código siguiente muestra cómo borrar todos los productos Toy de la base de datos: 
C#:
VB: 
5) Llamar a un procedimiento almacenado. 
El código siguiente muestra cómo obtener entidades de la tabla Product sin usar una consulta LINQ, sino llamando al procedimiento almacenado "GetProductsByCategory" que añadimos a nuestro modelo de datos. Fijáos que cuando obtenemos los resultados de la tabla Product, podemos actualizar/borrarlos y llamar a db.SubmitChanges() para hacer las modificaciones en la base de datos. 
C#: 
VB:
6) Obtener productos con paginado del lado del servidor 
El código siguiente muestra cómo implementar un paginado eficiente en el lado servidor como parte de una consulta LINQ. Usando los operadores Skip() y Take(), sólo devoleremos 10 filas de la base de datos - a partir de la fila 200. 
C#: 
VB: 
Resumen: 
LINQ to SQL nos permite modelar la capa de datos de nuestras aplicaciones de una forma simple y limpia. Una vez que hayamos definido nuestro modelo de datos, podemos realizar consultas, inserciones, actualizaciones y borrados sobre ella de forma fácil y eficiente. 
Espero que esta introducción os haya abierto el apetito de aprender más. En las próximas semanas continuaré esta serie de post explorando el LINQ to SQL en más detalle.

Más contenido relacionado

Destacado

Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
google
 
LINQ for slideshare
LINQ for slideshareLINQ for slideshare
LINQ for slideshare
Ian Barrs
 
CORREOS ELECTRONICOS
CORREOS ELECTRONICOSCORREOS ELECTRONICOS
CORREOS ELECTRONICOS
imotep
 
Los Correos Electronicos
Los Correos ElectronicosLos Correos Electronicos
Los Correos Electronicos
Zaflowra
 
RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES
Mari Bazurto
 
Linq
LinqLinq
Linq
samneang
 
Conclusiones y recomendaciones
Conclusiones y recomendacionesConclusiones y recomendaciones
Conclusiones y recomendaciones
luz delia hernandez
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
Yusuke Ando
 

Destacado (8)

Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
 
LINQ for slideshare
LINQ for slideshareLINQ for slideshare
LINQ for slideshare
 
CORREOS ELECTRONICOS
CORREOS ELECTRONICOSCORREOS ELECTRONICOS
CORREOS ELECTRONICOS
 
Los Correos Electronicos
Los Correos ElectronicosLos Correos Electronicos
Los Correos Electronicos
 
RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES
 
Linq
LinqLinq
Linq
 
Conclusiones y recomendaciones
Conclusiones y recomendacionesConclusiones y recomendaciones
Conclusiones y recomendaciones
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
 

Similar a Ejemplo Linq To SQL

Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.com
Simon Camacho
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3
jcfarit
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2
jcfarit
 
Linq to sql 4
Linq to sql 4Linq to sql 4
Linq to sql 4
jcfarit
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
jcfarit
 
Linq to sql 5
Linq to sql 5Linq to sql 5
Linq to sql 5
jcfarit
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
jcfarit
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
jcfarit
 
Bases de datos con java
Bases de datos con javaBases de datos con java
Bases de datos con java
Francisco Jose Caneda Iglesias
 
Linq to sql 9
Linq to sql 9Linq to sql 9
Linq to sql 9
jcfarit
 
Programación manuel crisostomo l
Programación manuel crisostomo lProgramación manuel crisostomo l
Programación manuel crisostomo l
Manuel Jesús Crisostomo Soriano
 
Java
JavaJava
ejemplo de diseño
ejemplo de diseñoejemplo de diseño
ejemplo de diseño
Santiago Torres
 
Dprn3 u3 a1_rahv
Dprn3 u3 a1_rahvDprn3 u3 a1_rahv
API WEB SQL ITParral
API WEB SQL ITParralAPI WEB SQL ITParral
API WEB SQL ITParral
Ferny Cortez
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
Luis Fernando Aguas Bucheli
 
Proveedores nativos
Proveedores nativosProveedores nativos
Proveedores nativos
Josue Perez
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corporacion de Industrias Tecnologicas S.A.
 
Silfredo valdez 28391048
Silfredo valdez 28391048Silfredo valdez 28391048
Silfredo valdez 28391048
SilfredoValdez
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Luis775803
 

Similar a Ejemplo Linq To SQL (20)

Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.com
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2
 
Linq to sql 4
Linq to sql 4Linq to sql 4
Linq to sql 4
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
 
Linq to sql 5
Linq to sql 5Linq to sql 5
Linq to sql 5
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 
Bases de datos con java
Bases de datos con javaBases de datos con java
Bases de datos con java
 
Linq to sql 9
Linq to sql 9Linq to sql 9
Linq to sql 9
 
Programación manuel crisostomo l
Programación manuel crisostomo lProgramación manuel crisostomo l
Programación manuel crisostomo l
 
Java
JavaJava
Java
 
ejemplo de diseño
ejemplo de diseñoejemplo de diseño
ejemplo de diseño
 
Dprn3 u3 a1_rahv
Dprn3 u3 a1_rahvDprn3 u3 a1_rahv
Dprn3 u3 a1_rahv
 
API WEB SQL ITParral
API WEB SQL ITParralAPI WEB SQL ITParral
API WEB SQL ITParral
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Proveedores nativos
Proveedores nativosProveedores nativos
Proveedores nativos
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Silfredo valdez 28391048
Silfredo valdez 28391048Silfredo valdez 28391048
Silfredo valdez 28391048
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
 

Más de jcfarit

Conceptos basicos de telefonia
Conceptos basicos de telefoniaConceptos basicos de telefonia
Conceptos basicos de telefonia
jcfarit
 
Manual de usuario Ruani
Manual de usuario RuaniManual de usuario Ruani
Manual de usuario Ruani
jcfarit
 
Unidad 3 gestion de procesos en linux
Unidad 3 gestion de procesos en linuxUnidad 3 gestion de procesos en linux
Unidad 3 gestion de procesos en linux
jcfarit
 
Arquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo LinuxArquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo Linux
jcfarit
 
ISO 27001 -6
ISO 27001 -6ISO 27001 -6
ISO 27001 -6
jcfarit
 
ISO 27001 - 5
ISO 27001 - 5ISO 27001 - 5
ISO 27001 - 5
jcfarit
 
ISO 27001 4
ISO 27001 4ISO 27001 4
ISO 27001 4
jcfarit
 
ISO 27001 -3
ISO 27001 -3 ISO 27001 -3
ISO 27001 -3
jcfarit
 
ISO 27001
ISO 27001ISO 27001
ISO 27001
jcfarit
 
ISO 27001
ISO 27001ISO 27001
ISO 27001
jcfarit
 
Curso ubuntuimprimible
Curso ubuntuimprimibleCurso ubuntuimprimible
Curso ubuntuimprimible
jcfarit
 
Curso ubuntu1extraimprimible
Curso ubuntu1extraimprimibleCurso ubuntu1extraimprimible
Curso ubuntu1extraimprimible
jcfarit
 
Autentificación-Firma Digital
Autentificación-Firma DigitalAutentificación-Firma Digital
Autentificación-Firma Digital
jcfarit
 
Auditoría de Routers y Switches
Auditoría de Routers y SwitchesAuditoría de Routers y Switches
Auditoría de Routers y Switches
jcfarit
 
Arquitectura multi agente.doc
Arquitectura multi agente.docArquitectura multi agente.doc
Arquitectura multi agente.doc
jcfarit
 
Aplicaciones Criptográficas en Entornos Económicos
Aplicaciones Criptográficas en Entornos EconómicosAplicaciones Criptográficas en Entornos Económicos
Aplicaciones Criptográficas en Entornos Económicos
jcfarit
 
Análisis de los sistemas de dinero electrónico
Análisis de los sistemas de dinero electrónicoAnálisis de los sistemas de dinero electrónico
Análisis de los sistemas de dinero electrónico
jcfarit
 
Suneval
SunevalSuneval
Suneval
jcfarit
 
Guia plan de_clases
Guia plan de_clasesGuia plan de_clases
Guia plan de_clases
jcfarit
 
Los medios de enseñanza aprendizaje
Los medios de enseñanza aprendizajeLos medios de enseñanza aprendizaje
Los medios de enseñanza aprendizaje
jcfarit
 

Más de jcfarit (20)

Conceptos basicos de telefonia
Conceptos basicos de telefoniaConceptos basicos de telefonia
Conceptos basicos de telefonia
 
Manual de usuario Ruani
Manual de usuario RuaniManual de usuario Ruani
Manual de usuario Ruani
 
Unidad 3 gestion de procesos en linux
Unidad 3 gestion de procesos en linuxUnidad 3 gestion de procesos en linux
Unidad 3 gestion de procesos en linux
 
Arquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo LinuxArquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo Linux
 
ISO 27001 -6
ISO 27001 -6ISO 27001 -6
ISO 27001 -6
 
ISO 27001 - 5
ISO 27001 - 5ISO 27001 - 5
ISO 27001 - 5
 
ISO 27001 4
ISO 27001 4ISO 27001 4
ISO 27001 4
 
ISO 27001 -3
ISO 27001 -3 ISO 27001 -3
ISO 27001 -3
 
ISO 27001
ISO 27001ISO 27001
ISO 27001
 
ISO 27001
ISO 27001ISO 27001
ISO 27001
 
Curso ubuntuimprimible
Curso ubuntuimprimibleCurso ubuntuimprimible
Curso ubuntuimprimible
 
Curso ubuntu1extraimprimible
Curso ubuntu1extraimprimibleCurso ubuntu1extraimprimible
Curso ubuntu1extraimprimible
 
Autentificación-Firma Digital
Autentificación-Firma DigitalAutentificación-Firma Digital
Autentificación-Firma Digital
 
Auditoría de Routers y Switches
Auditoría de Routers y SwitchesAuditoría de Routers y Switches
Auditoría de Routers y Switches
 
Arquitectura multi agente.doc
Arquitectura multi agente.docArquitectura multi agente.doc
Arquitectura multi agente.doc
 
Aplicaciones Criptográficas en Entornos Económicos
Aplicaciones Criptográficas en Entornos EconómicosAplicaciones Criptográficas en Entornos Económicos
Aplicaciones Criptográficas en Entornos Económicos
 
Análisis de los sistemas de dinero electrónico
Análisis de los sistemas de dinero electrónicoAnálisis de los sistemas de dinero electrónico
Análisis de los sistemas de dinero electrónico
 
Suneval
SunevalSuneval
Suneval
 
Guia plan de_clases
Guia plan de_clasesGuia plan de_clases
Guia plan de_clases
 
Los medios de enseñanza aprendizaje
Los medios de enseñanza aprendizajeLos medios de enseñanza aprendizaje
Los medios de enseñanza aprendizaje
 

Último

Análisis de Crowdfunding con el maestro Tapia de Artes
Análisis de Crowdfunding con el maestro Tapia de ArtesAnálisis de Crowdfunding con el maestro Tapia de Artes
Análisis de Crowdfunding con el maestro Tapia de Artes
al050121024
 
Copia de LaHoja_20240527_200357_0000.pptx
Copia de LaHoja_20240527_200357_0000.pptxCopia de LaHoja_20240527_200357_0000.pptx
Copia de LaHoja_20240527_200357_0000.pptx
jcoloniapu
 
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidadESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
jorgejhonatanaltamir1
 
Oruam, el pequeño y el gran carismatico mago
Oruam, el pequeño y el gran carismatico magoOruam, el pequeño y el gran carismatico mago
Oruam, el pequeño y el gran carismatico mago
ChichipeSevillaJhost
 
Encuentra ese factor X que te haga mejorar como SEO #SOB24
Encuentra ese factor X que te haga mejorar como SEO  #SOB24Encuentra ese factor X que te haga mejorar como SEO  #SOB24
Encuentra ese factor X que te haga mejorar como SEO #SOB24
ssuser82c1d6
 
Encuentra ese factor X que te haga mejorar como SEO #SOB24
Encuentra ese factor X que te haga mejorar como SEO  #SOB24Encuentra ese factor X que te haga mejorar como SEO  #SOB24
Encuentra ese factor X que te haga mejorar como SEO #SOB24
MJ Cachón Yáñez
 
importancia de la organizacion moderna jjj
importancia de la organizacion moderna jjjimportancia de la organizacion moderna jjj
importancia de la organizacion moderna jjj
gallegoscarneronelso
 
Unidad IV Funciones de la Evaluacion UNICARIBE
Unidad IV Funciones de la Evaluacion UNICARIBEUnidad IV Funciones de la Evaluacion UNICARIBE
Unidad IV Funciones de la Evaluacion UNICARIBE
daniellopez200031
 
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdfTRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
anacruztone06
 
APLICACIONES DE INTERNET-INFORMATICA.pptx
APLICACIONES DE INTERNET-INFORMATICA.pptxAPLICACIONES DE INTERNET-INFORMATICA.pptx
APLICACIONES DE INTERNET-INFORMATICA.pptx
cpadua713
 
- El Cerebro Femenino como se desarrolla
- El Cerebro Femenino como se desarrolla- El Cerebro Femenino como se desarrolla
- El Cerebro Femenino como se desarrolla
BERTILAARTEAGATOLENT1
 
SLIDESHARE, qué es, ventajas y desventajas
SLIDESHARE, qué es, ventajas y desventajasSLIDESHARE, qué es, ventajas y desventajas
SLIDESHARE, qué es, ventajas y desventajas
ruthechepurizaca
 
APLICACIONES EN INTERNET-GOOGLE4 XD.docx
APLICACIONES EN INTERNET-GOOGLE4 XD.docxAPLICACIONES EN INTERNET-GOOGLE4 XD.docx
APLICACIONES EN INTERNET-GOOGLE4 XD.docx
jordanovillacorta09
 
aplicaciones de internet Google.20240pdf
aplicaciones de internet Google.20240pdfaplicaciones de internet Google.20240pdf
aplicaciones de internet Google.20240pdf
jordanovillacorta09
 
Herramientas de la web 2.0.pptx
Herramientas    de     la    web    2.0.pptxHerramientas    de     la    web    2.0.pptx
Herramientas de la web 2.0.pptx
anittaeunice
 
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdfDocumento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
sthefannydelgado765
 
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdfMONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
darilpisco021
 
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdfLA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
YulianaCori
 
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docxCOMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
Jean Apellidos
 
El uso de las tics en la vida cotidiana y en otros hábitos
El uso de las tics en la vida cotidiana y en otros  hábitosEl uso de las tics en la vida cotidiana y en otros  hábitos
El uso de las tics en la vida cotidiana y en otros hábitos
241560435
 

Último (20)

Análisis de Crowdfunding con el maestro Tapia de Artes
Análisis de Crowdfunding con el maestro Tapia de ArtesAnálisis de Crowdfunding con el maestro Tapia de Artes
Análisis de Crowdfunding con el maestro Tapia de Artes
 
Copia de LaHoja_20240527_200357_0000.pptx
Copia de LaHoja_20240527_200357_0000.pptxCopia de LaHoja_20240527_200357_0000.pptx
Copia de LaHoja_20240527_200357_0000.pptx
 
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidadESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
ESTUDIANTES BENEFICIARIOS que se suman a los beneficios de la universidad
 
Oruam, el pequeño y el gran carismatico mago
Oruam, el pequeño y el gran carismatico magoOruam, el pequeño y el gran carismatico mago
Oruam, el pequeño y el gran carismatico mago
 
Encuentra ese factor X que te haga mejorar como SEO #SOB24
Encuentra ese factor X que te haga mejorar como SEO  #SOB24Encuentra ese factor X que te haga mejorar como SEO  #SOB24
Encuentra ese factor X que te haga mejorar como SEO #SOB24
 
Encuentra ese factor X que te haga mejorar como SEO #SOB24
Encuentra ese factor X que te haga mejorar como SEO  #SOB24Encuentra ese factor X que te haga mejorar como SEO  #SOB24
Encuentra ese factor X que te haga mejorar como SEO #SOB24
 
importancia de la organizacion moderna jjj
importancia de la organizacion moderna jjjimportancia de la organizacion moderna jjj
importancia de la organizacion moderna jjj
 
Unidad IV Funciones de la Evaluacion UNICARIBE
Unidad IV Funciones de la Evaluacion UNICARIBEUnidad IV Funciones de la Evaluacion UNICARIBE
Unidad IV Funciones de la Evaluacion UNICARIBE
 
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdfTRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
TRABAJO APLICACIONES EN INTERNET - Ana cruz tone.pdf
 
APLICACIONES DE INTERNET-INFORMATICA.pptx
APLICACIONES DE INTERNET-INFORMATICA.pptxAPLICACIONES DE INTERNET-INFORMATICA.pptx
APLICACIONES DE INTERNET-INFORMATICA.pptx
 
- El Cerebro Femenino como se desarrolla
- El Cerebro Femenino como se desarrolla- El Cerebro Femenino como se desarrolla
- El Cerebro Femenino como se desarrolla
 
SLIDESHARE, qué es, ventajas y desventajas
SLIDESHARE, qué es, ventajas y desventajasSLIDESHARE, qué es, ventajas y desventajas
SLIDESHARE, qué es, ventajas y desventajas
 
APLICACIONES EN INTERNET-GOOGLE4 XD.docx
APLICACIONES EN INTERNET-GOOGLE4 XD.docxAPLICACIONES EN INTERNET-GOOGLE4 XD.docx
APLICACIONES EN INTERNET-GOOGLE4 XD.docx
 
aplicaciones de internet Google.20240pdf
aplicaciones de internet Google.20240pdfaplicaciones de internet Google.20240pdf
aplicaciones de internet Google.20240pdf
 
Herramientas de la web 2.0.pptx
Herramientas    de     la    web    2.0.pptxHerramientas    de     la    web    2.0.pptx
Herramientas de la web 2.0.pptx
 
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdfDocumento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
Documento A4 formas curvas Hoja de papel multicolor_20240615_213856_0000.pdf
 
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdfMONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
MONOGRAFRIA GOOGLE (grupo 1ro de google).pdf
 
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdfLA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
LA NUBE YULIANA GABRIELA CORI NINARAQUE.pdf
 
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docxCOMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
COMO EVOLUCIONO LAS WEB EN PLENO 2024.docx
 
El uso de las tics en la vida cotidiana y en otros hábitos
El uso de las tics en la vida cotidiana y en otros  hábitosEl uso de las tics en la vida cotidiana y en otros  hábitos
El uso de las tics en la vida cotidiana y en otros hábitos
 

Ejemplo Linq To SQL

  • 1. Usando LINQ to SQL (1ª Parte) 43 respuestas En los últimos meses he escrito una serie de post que cubrían algunas de las característcias que van a venir con Visual Studio y .NET Framework "Orcas". Aquí tenéis los enlaces:  Propiedades automáticas, inicializadores de objectos e inicializadores de colleciones.  Métodos de extensión.  Expresiones Lambda.  Sintaxis de consultas.  Tipos Anónimos Las características anteriores hacen que la consulta de datos sea un concepto de primera clase. Conocemos a este modelo de programación como "LINQ" - que viene de .NET Language Integrated Query. Los desarrolladores pueden usar LINQ con cualquier fuente de datos. Pueden expresar consultas eficientemente en los lenguajes de programación que eligan, opcionalmente transformar/incrustar los resultados de las consultas en el formato que quieran, y entonces manipular fácilmente los resultados. Los lenguajes habilitados para LINQ pueden aportar seguridad de tipos y chequeo en tiempo de compilación el las expresiones de consulta, y desarrollar herramientas que aporten intelisense, debugging, y un gran soporte para refactoring cuando escriban código de LINQ. LINQ soporta un modelo de extensibilidad muy rico que facilita la creación de operadores eficientes para fuentes de datos. La versión "Orcas" del .NET Framework viene con librerías que habilitan LINQ sobre objetos, XML y bases de datos. ¿Qué es LINQ to SQL? LINQ to SQL es una implementación de O/RM(object relational mapping, mapeador de objetos relacionales) que viene con la versión "Orcas" del .NET Framework, y nos permite modelar bases de datos relacionales con clases de .NET. Podemos consultar bases de datos con LINQ, así como actualizar/añadir/borrar datos de ellas. Modelando bases de datos con LINQ to SQL: Visual Studio "Orcas" viene con un diseñador de LINQ to SQL que nos aporta una forma fácil de modelar y visualizar una base de datos como un modelo de objeto de LINQ to SQL. El próximo post cubrirá en más profundidad cómo usar este diseñador (podéis ver este video que hice en Enero para verme construir un modelo LINQ to SQL). Usando ese diseñador LINQ to SQL puedo crear fácilmente una representación de la base de datos "Northwind":
  • 2. El diseño de arriba define cuatro clases: Product, Category, Order y OrderDetail. Las propiedades de cada clase mapean las columnas de cada table en la base de datos. Cada instancia de esa clase representa una fila en las tablas. Las flechas entre las cuatro clases de arriba representan las asociaciones/relaciones entre las diferentes entidades. Son típicamente modeladas como relaciones primary-key/foreign-key en la base de datos. La dirección de las flechas en el diseñador indican si la relación es uno-a-uno o uno-a-varios. Se añadiran propiedades fuertemente tipadas a las entidades basándose en esto. Por ejemplo, la clase Category de arriba tiene una relación de uno-a-varios con la clase Product. Esto implica que tendrá una propiedad "Categories" que es una colección de objetos Product con esa categoría. La clase Product entonces tiene una propiedad "Category" que apunta a una instancia de la clase Category representando la categoría a la que pertenece el producto. El panel de la derecha del diseñador LINQ to SQL contiene una lista de procedimientos almacenados que interactúan con nuestro modelo de base de datos. En el ejemplo de arriba hemos añadido un SPROC (Procedimiento almacenado) "GetProductsByCategory". Como entrada recibe un categoryID, y devuelve una secuencia de Product como resultado. Veremos cómo llamar a este procedimiento almacenado en un ejemplo. Entendiendo la clase DataContext Cuando pulsáis el boton "save" del diseñador de LINQ to SQL, Visual Studio generará clases .NET para representar las entidades y las relaciones de la base de datos que hemos modelado. Por cada archivo añadido a nuestra solución por el diseñador LINQ to SQL también se generará una clase DataContext. Esta clase es a traves de la cual realizaremos las consultas a las entidades de nuestra base de datos. Esta clase tendrá propiedades que representarán a cada tabla que hemos modelado, así como métodos para cada procedimiento almacenado que añadamos. Por ejemplo, aquí tenéis la clase NorthwindDataContext:
  • 3. Ejemplos de LINQ to SQL Una vez que hemos modelado nuestra base de datos con el diseñador de LINQ to SQL, podemos escribir código fácilmente para trabajar con él. Aquí tenéis unos cuantos ejemplos que muestran tareas comunes con datos: 1) Consultando Products de la base de datos El siguiente código usa una consulta LINQ para obtener una secuencia IEnumerable de objetos Product. Fijáos que este código está consultando a traves de la relación Product/Category para obtener aquellos productos de la categoría "Beverages". C#: VB: 2) Actualizando un producto en la base de datos. El código siguiente muestra cómo obtener un producto de la base de datos, actualizar su precio, y guardar los cambios en la base de datos: C#:
  • 4. VB: Nota: VB en "Orcas" Beta1 no soporta Lambdas aún. Pero en la Beta2 sí -de forma que el código anterior se podrá escribir de una forma más concisa. 3) Añadir una nueva categoría y dos nuevos productos en la base de datos. El siguiente código muestra cómo crear una nueva categoría, y entonces crear dos nuevos productos y asociarlos a la nueva categoría. Los tres son después guardados en la base de datos. Fijaos como no necesitamos administrar manualmente las relaciones primarykey/foreignkey. Sólo tenemos que añadir los objetos Product en la colección "Products" de la categoría, y luego añadir el nuevo objeto Category en la colección de "Categories" del DataContext, LINQ to SQL sabrá automáticamente crear las PF/FK necesarias: C#: 4)Borar productos de la base de datos. El código siguiente muestra cómo borrar todos los productos Toy de la base de datos: C#:
  • 5. VB: 5) Llamar a un procedimiento almacenado. El código siguiente muestra cómo obtener entidades de la tabla Product sin usar una consulta LINQ, sino llamando al procedimiento almacenado "GetProductsByCategory" que añadimos a nuestro modelo de datos. Fijáos que cuando obtenemos los resultados de la tabla Product, podemos actualizar/borrarlos y llamar a db.SubmitChanges() para hacer las modificaciones en la base de datos. C#: VB:
  • 6. 6) Obtener productos con paginado del lado del servidor El código siguiente muestra cómo implementar un paginado eficiente en el lado servidor como parte de una consulta LINQ. Usando los operadores Skip() y Take(), sólo devoleremos 10 filas de la base de datos - a partir de la fila 200. C#: VB: Resumen: LINQ to SQL nos permite modelar la capa de datos de nuestras aplicaciones de una forma simple y limpia. Una vez que hayamos definido nuestro modelo de datos, podemos realizar consultas, inserciones, actualizaciones y borrados sobre ella de forma fácil y eficiente. Espero que esta introducción os haya abierto el apetito de aprender más. En las próximas semanas continuaré esta serie de post explorando el LINQ to SQL en más detalle.