LINQ con varios orígenes de datos

Una vez superado unos inconvenientes, he podido retomar un poco esta parte VS2008 y fundamentalmente LINQ, espero este post sea de su utilidad.

En un post anterior de LINQ había mostrado una demo 3 capas con SQLServer y unas pruebas con objetos y XML a lo cual LINQ ha pasado las pruebas.

Pretendía a través de este demo realizar una conexíon con 2 distintos orígenes de datos (SQL y Oracle) e intentar mapear tablas tanto de SQL como de Oracle, sin embargo, con las tablas de Oracle esto no es posible. A continuación detallo todos los pasos que se deben seguir para conectarse a una base oracle, con el Server Explorer. Tomar en cuenta que se debe instalar la base de datos Oracle y además el ODP (Oracle Data Provider) Net para que se pueda conectar.

  1. Seleccionar Oracle Database
  2. LINQ Multisource

  3. Ingresar el SID del servidor y el usuario y password de la base.
  4. LINQ Multisource 2
  5. Finalmente verificar que se haya conectado exitosamente.
  6. A continuación podemos ver el error resultante cuando pretendemos arrastrar una tabla Oracle en un dbml
  7. LINQ Multisource 3

En vista de que la intención inicial de la demo no fue posible, ahora intentaré al menos consultar la data de las dos bases. En Oracle están los datos de país de origen, tipo de teléfono, estado civil, etc. mientras que en SQL se encuentra la información de los empleados, por lo que para presentar el país de origen de los empleados es necesario hacer una consulta de las dos bases.

A través de un dataadapter consigo poner la data de la base Oracle en un Dataset y con el dbml de SQL intento realizar la consulta, pero nuevamente no es posible, imagino que no es posible utilizar sentencias LINQ con objetos diferentes (Dataset y dbmls), así que ya lo saben LINQ solo con objetos del mismo tipo.

El único camino que queda es mapear la data del dbml a un dataset tipificado con la estructura de las tablas de SQL e intentar realizar la consulta.

Efectivamente ese fue el mejor camino para presentar la data de dos data sources diferentes, se que la interfaz del resultado no es lo mejor que se puede hacer, pero para efectos de esta demo, considero que está bien, cumple con lo que quería mostrar.

LINQ Multisource Resultado

Además de los datos del empleado, se ha consultado los teléfonos para lo cual en el evento RowDataBound se han consultado y presentado en un grid agregado previamente como ItemTemplate. Bueno aqui tienen el código (recuerden renombrar el archivo a .zip) para que lo vean, los requerimientos para correrlo son: VS2008, SQL2005, Oracle XE 11g, ODP Net, deben crear las tablas cuyas estructuras pueden encontrar en los DataSets y la data se encuentra en la página de resultados.

Anuncios

VS2008 Orcas, LINQ

Visual Studio 2008, conocido tambien como Orcas es el producto que el siguiente año tendremos en el mercado y que de seguro nos facilitará significativamente nuestro trabajo como desarrolladores, VS2008 trae algunas cosas nuevas e interesantes como LINQ (Language Integrated Query), esta API revoluciona todo el concepto de acceso y manejo de datos desde las aplicaciones, facilita enormemente el trabajo con distintos orígenes de datos, es extensible no solo a tablas de una base de datos, sino tambien con XML y con objetos (colecciones).

Ayer hubo un evento muy productivo en la UTPL, organizado por la comunidad de profesionales lojadotnet, en el que hice una Presentación LINQ y además el Demo LINQ (tiene una extensión .doc, que debes cambiar por .zip), así que en estos enlaces puedes descargarlos. Y seguir probando las ventajas que te da LINQ y VS2008. Para que puedas correr el ejemplo con BD, debes ejecutar el archivo script.sql, que se encuentra en el demo.