SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
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 5google
 
LINQ for slideshare
LINQ for slideshareLINQ for slideshare
LINQ for slideshareIan Barrs
 
CORREOS ELECTRONICOS
CORREOS ELECTRONICOSCORREOS ELECTRONICOS
CORREOS ELECTRONICOSimotep
 
Los Correos Electronicos
Los Correos ElectronicosLos Correos Electronicos
Los Correos ElectronicosZaflowra
 
RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES Y CONCLUSIONES Mari Bazurto
 
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.comSimon Camacho
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3jcfarit
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2jcfarit
 
Linq to sql 4
Linq to sql 4Linq to sql 4
Linq to sql 4jcfarit
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6jcfarit
 
Linq to sql 5
Linq to sql 5Linq to sql 5
Linq to sql 5jcfarit
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8jcfarit
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7jcfarit
 
Linq to sql 9
Linq to sql 9Linq to sql 9
Linq to sql 9jcfarit
 
API WEB SQL ITParral
API WEB SQL ITParralAPI WEB SQL ITParral
API WEB SQL ITParralFerny 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.pptxLuis Fernando Aguas Bucheli
 
Proveedores nativos
Proveedores nativosProveedores nativos
Proveedores nativosJosue 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 28391048SilfredoValdez
 
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.pptxLuis775803
 

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 telefoniajcfarit
 
Manual de usuario Ruani
Manual de usuario RuaniManual de usuario Ruani
Manual de usuario Ruanijcfarit
 
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 linuxjcfarit
 
Arquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo LinuxArquitectura General del Sistema Operativo Linux
Arquitectura General del Sistema Operativo Linuxjcfarit
 
ISO 27001 -6
ISO 27001 -6ISO 27001 -6
ISO 27001 -6jcfarit
 
ISO 27001 - 5
ISO 27001 - 5ISO 27001 - 5
ISO 27001 - 5jcfarit
 
ISO 27001 4
ISO 27001 4ISO 27001 4
ISO 27001 4jcfarit
 
ISO 27001 -3
ISO 27001 -3 ISO 27001 -3
ISO 27001 -3 jcfarit
 
ISO 27001
ISO 27001ISO 27001
ISO 27001jcfarit
 
ISO 27001
ISO 27001ISO 27001
ISO 27001jcfarit
 
Curso ubuntuimprimible
Curso ubuntuimprimibleCurso ubuntuimprimible
Curso ubuntuimprimiblejcfarit
 
Curso ubuntu1extraimprimible
Curso ubuntu1extraimprimibleCurso ubuntu1extraimprimible
Curso ubuntu1extraimprimiblejcfarit
 
Autentificación-Firma Digital
Autentificación-Firma DigitalAutentificación-Firma Digital
Autentificación-Firma Digitaljcfarit
 
Auditoría de Routers y Switches
Auditoría de Routers y SwitchesAuditoría de Routers y Switches
Auditoría de Routers y Switchesjcfarit
 
Arquitectura multi agente.doc
Arquitectura multi agente.docArquitectura multi agente.doc
Arquitectura multi agente.docjcfarit
 
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ómicosjcfarit
 
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ónicojcfarit
 
Guia plan de_clases
Guia plan de_clasesGuia plan de_clases
Guia plan de_clasesjcfarit
 
Los medios de enseñanza aprendizaje
Los medios de enseñanza aprendizajeLos medios de enseñanza aprendizaje
Los medios de enseñanza aprendizajejcfarit
 

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

SINDROME NEFROTICO PEDIATRIA..............................
SINDROME NEFROTICO PEDIATRIA..............................SINDROME NEFROTICO PEDIATRIA..............................
SINDROME NEFROTICO PEDIATRIA..............................edsontareas
 
Plantilla-seguridad-informatica ára.pptx
Plantilla-seguridad-informatica ára.pptxPlantilla-seguridad-informatica ára.pptx
Plantilla-seguridad-informatica ára.pptxALEXMAURICIOVASQUEZS
 
Imagen creada en photopea con el fin de informar acerca de los navegadores web.
Imagen creada en photopea con el fin de informar acerca de los navegadores web.Imagen creada en photopea con el fin de informar acerca de los navegadores web.
Imagen creada en photopea con el fin de informar acerca de los navegadores web.UNIVERSIDAD
 
Presentacion De Imagenes Digitales Y Navegadores De Internet.
Presentacion De Imagenes Digitales Y Navegadores De Internet.Presentacion De Imagenes Digitales Y Navegadores De Internet.
Presentacion De Imagenes Digitales Y Navegadores De Internet.Universidad De Sonora
 
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidianaPerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana241544382
 
DIPTICO SOBRE Conciencia psicológica y Moral.docx
DIPTICO SOBRE Conciencia psicológica y Moral.docxDIPTICO SOBRE Conciencia psicológica y Moral.docx
DIPTICO SOBRE Conciencia psicológica y Moral.docxJEEPZONGUIAMPIERGONZ
 
Trabajo de investigación escolar sobre el teatro
Trabajo de investigación escolar sobre el teatroTrabajo de investigación escolar sobre el teatro
Trabajo de investigación escolar sobre el teatromateohenrryg
 
LINEA DEL TIEMPO DEL INTERNET - ESTRADA R
LINEA DEL TIEMPO DEL INTERNET - ESTRADA RLINEA DEL TIEMPO DEL INTERNET - ESTRADA R
LINEA DEL TIEMPO DEL INTERNET - ESTRADA RRicardoEstrada90
 
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptx
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptxCOMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptx
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptxPaolaRamirez127635
 
sistema político Mariangel Adjam Mapa mental
sistema político Mariangel Adjam Mapa mentalsistema político Mariangel Adjam Mapa mental
sistema político Mariangel Adjam Mapa mentalMariangelAdjam
 
Informe breve sobre el teatro en general.
Informe breve sobre el teatro en general.Informe breve sobre el teatro en general.
Informe breve sobre el teatro en general.mateohenrryg
 
Distribucion fisica internacional .pptx
Distribucion fisica internacional  .pptxDistribucion fisica internacional  .pptx
Distribucion fisica internacional .pptxRicardoCastellanosDr
 
ciberseguridad y seguridad informatica- alex jaren.pptx
ciberseguridad y seguridad informatica- alex jaren.pptxciberseguridad y seguridad informatica- alex jaren.pptx
ciberseguridad y seguridad informatica- alex jaren.pptxdiazalexci00
 
Navegadores de Internet en la actualidad.
Navegadores de Internet en la actualidad.Navegadores de Internet en la actualidad.
Navegadores de Internet en la actualidad.Pablo Rivas
 
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidianaMartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana241536124
 

Último (16)

SINDROME NEFROTICO PEDIATRIA..............................
SINDROME NEFROTICO PEDIATRIA..............................SINDROME NEFROTICO PEDIATRIA..............................
SINDROME NEFROTICO PEDIATRIA..............................
 
Plantilla-seguridad-informatica ára.pptx
Plantilla-seguridad-informatica ára.pptxPlantilla-seguridad-informatica ára.pptx
Plantilla-seguridad-informatica ára.pptx
 
Imagen creada en photopea con el fin de informar acerca de los navegadores web.
Imagen creada en photopea con el fin de informar acerca de los navegadores web.Imagen creada en photopea con el fin de informar acerca de los navegadores web.
Imagen creada en photopea con el fin de informar acerca de los navegadores web.
 
Presentacion De Imagenes Digitales Y Navegadores De Internet.
Presentacion De Imagenes Digitales Y Navegadores De Internet.Presentacion De Imagenes Digitales Y Navegadores De Internet.
Presentacion De Imagenes Digitales Y Navegadores De Internet.
 
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidianaPerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana
PerezGallegos_Claudia_M1S3Al6.pptx las tic en la vida cotidiana
 
DIPTICO SOBRE Conciencia psicológica y Moral.docx
DIPTICO SOBRE Conciencia psicológica y Moral.docxDIPTICO SOBRE Conciencia psicológica y Moral.docx
DIPTICO SOBRE Conciencia psicológica y Moral.docx
 
Trabajo de investigación escolar sobre el teatro
Trabajo de investigación escolar sobre el teatroTrabajo de investigación escolar sobre el teatro
Trabajo de investigación escolar sobre el teatro
 
LINEA DEL TIEMPO DEL INTERNET - ESTRADA R
LINEA DEL TIEMPO DEL INTERNET - ESTRADA RLINEA DEL TIEMPO DEL INTERNET - ESTRADA R
LINEA DEL TIEMPO DEL INTERNET - ESTRADA R
 
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptx
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptxCOMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptx
COMO PUBLICAR UNA PRESENTACION GRAFICA EN INTERNET .pptx
 
sistema político Mariangel Adjam Mapa mental
sistema político Mariangel Adjam Mapa mentalsistema político Mariangel Adjam Mapa mental
sistema político Mariangel Adjam Mapa mental
 
Informe breve sobre el teatro en general.
Informe breve sobre el teatro en general.Informe breve sobre el teatro en general.
Informe breve sobre el teatro en general.
 
Distribucion fisica internacional .pptx
Distribucion fisica internacional  .pptxDistribucion fisica internacional  .pptx
Distribucion fisica internacional .pptx
 
ciberseguridad y seguridad informatica- alex jaren.pptx
ciberseguridad y seguridad informatica- alex jaren.pptxciberseguridad y seguridad informatica- alex jaren.pptx
ciberseguridad y seguridad informatica- alex jaren.pptx
 
Dominios_De_Internet.pdf
Dominios_De_Internet.pdfDominios_De_Internet.pdf
Dominios_De_Internet.pdf
 
Navegadores de Internet en la actualidad.
Navegadores de Internet en la actualidad.Navegadores de Internet en la actualidad.
Navegadores de Internet en la actualidad.
 
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidianaMartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana
MartinezGuzman_Paulina_M1S3AI6.pptxEL uso de las tic en la vida cotidiana
 

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.