22 de enero de 2010

LINQ to XML en 10 minutos

Resumen sobre las principales características de Linq to XML con C#. Veremos las cosas mas importantes y que deben conocerse para trabajar con LINQ to XML.

En este y próximos artículos trataremos los siguientes temas relacionados con LINQ to XML:

  1. ¿Que es LINQ to XML?
  2. Clases Principales de LINQ to XML.
  3. Como crear documentos XML con LINQ.
  4. Como leer documentos XML con LINQ.
  5. Como modificar documentos XML con LINQ.
  6. Como trabajar con espacios de nombres (namespace).
  7. Validar documentos XML con LINQ.
  8. Serializar y Deserializar Objectos.

 

¿Que es LINQ to XML?

LINQ to XML no es otra cosa que el uso de LINQ (Lenguaje Integrado de Consultas) sobre documentos o elementos XML. Esta tecnología nos permite a través de nuevos objetos, manipular los XML en memoria.

O sea, a través de las nuevas clases incluidas en el espacio de nombre System.Xml.Linq podremos llevar a objetos en memoria los documentos XML, los que podremos manipular usando LINQ.

 

Clases Principales de LINQ to XML

LINQ to XML nos proporciona una serie de clases que veremos a continuación con las que podremos realizar consultas. Estas clases, en su mayoría coinciden con las que anteriormente ya teníamos en el espacio de nombre System.Xml, solo que estas nuevas están en el espacio de nombre System.Xml.Linq y mientras las anteriores comenzaban con el sufijo Xml, las recientes comienzan con X, por ejemplo, XmlElement y XElement ambas representan un elemento XML; pero veamos las nuevas clases, o al menos las mas importantes según mi criterio:

  • XDocument: Representa un documento XML.
  • XElement: Representa un elemento XML que a su ves puede contener otros elementos y/o atributos.
  • XAttribute: Representa un atributo perteneciente a un elemento XML.
  • XNamespace: Representa un espacio de nombres XML. No se puede heredar esta clase.

 

Nota: LINQ to XML está disponible a partir del .NET Framework 3.5.

Artículos Relacionados:

15 de enero de 2010

Error 29506 instando SQL Server Management Studio Express

Error 29506 instalando SQLServer2005_SSMSEE.msi. Recientemente instalé Windows 7 y al intentar instalar la herramienta Microsoft SQL Server Management Studio Express (SSMSE) me dio el siguiente error:

MSSQL_Error29506

Este error me ocurrió en un ordenador con Windows 7 instalado, pero también es posible que ocurra si tienes Windows Vista.

    Causa Error 29506 SSMSE

    La causa del error está relacionada con los roles y permisos de los usuarios, es por ello que para solucionarlo debemos cambiar la configuración de las cuentas de usuario.

     

Solución Error 29506 SQL:

La solución no es otra que acceder al control de cuentas de usuario y establecer la opción menos segura. Probablemente existan otras soluciones relacionadas con la certificación para Windows 7 de este instalador, pero en fin, esta es mucho mas práctica y funcional, y si lo deseas una ves instalado el software puedes restaurar nuevamente el UAC, pero en fin vallamos al problema:

MSSQL_Error29506_Cuentas_Usuario

  1. Abrir Configuración de Cuentas de Usuario: Para ello basta con escribir UAC en el cuadro de buscar programas del menú Inicio, y el primer programa que aparece es el que buscamos; otra opción es ir a través del panel de control.

  2. Una ves en la pantalla deslizamos el seleccionador que por defecto aparecerá en la opción “Predeterminado: Notificarme sólo cuando un programa intente realizar cambios en el equipo” hasta la opción mínima “No notificarme nunca cuando …”.

 

Aceptamos los cambios y con esto está todo solucionado y listo para proceder a instalar la herramienta Microsoft SQL Server Management Studio Express (SSMSE), si quieres puedes acceder directamente a su descarga SQLServer2005_SSMSEE.msi.

12 de enero de 2010

Manipular Archivos Excel (XLS) en .Net

Comentando con un colega, sobre las ventajas, desventajas y dificultades que solemos encontrarnos al usar las VSTO en .Net para manipular Documentos de Office. Me habló sobre esta interesante dll que nos permite manipular documentos Excel (.xls).

Veamos un ejemplo de manipulación de lo que podríamos hacer:

ExcelReader excel = new ExcelReader(txtPath.Text);
excel.ActiveSheetIndex = 0;
 
excel.ReadCellAsString(rowIndex, columnIndex); // Leer la celda como string
excel.ReadCellAsDouble(rowIndex, columnIndex);
excel.ReadCellAsInt(rowIndex, columnIndex);

Al proyecto Visual Studio le debemos incluir la dll y el cs siguientes ExcelReader.rar

11 de enero de 2010

Como instalar un Servicio Windows

Este es un apunte rapido que demuestra como instalar y desintalar un servicio a traves de la herramienta (Installutil.exe):

Registrar Servicio
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Installutil.exe "aplicacion"

Quitar Servicio:
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Installutil.exe /u "aplicacion"

Espero les sea de utilidad…

5 de enero de 2010

LINQ Introducción

¿Que es LINQ?

LINQ (Language Integrated Query) Lenguaje Integrado de Consulta, y es una funcionalidad incluida en Visual Studio 2008 (.Net 3.5), que nos permite realizar consultas nativas semejantes a las de SQL.

Si se está familiarizado con las consultas SQL de bases de datos, el aprendizaje de LINQ será increíblemente sencillo.

LINQ es la característica más importante incluida en el .NET Framework 3.5, de echo la mayor parte de las novedades incluidas están relacionadas directa o indirectamente con LINQ. Pero para llevarnos una idea general sobre el tema veamos un ejemplo sencillo de lo que podemos lograr.

LINQ Ejemplo

Si tuviéramos una colección de personas y quisiéramos devolver solo aquellas que pertenezcan a un país determinado y ordenarlas por la Nombre; utilizando LINQ haríamos algo similar a esto:

var resultado = from p in lstPersonas
                where p.CodigoPais == "ES"
                orderby p.Nombre
                select p;

El resultado de esta consulta sería la colección de todas las personas que posean como país España y estarán ordenadas por nombre. Pero si no comprendes bien el código anterior no te preocupes, en este y los siguientes artículos, estaré detallando un poco más en esta tecnología de forma que puedas comprender este y todos los demás ejemplos que plantearemos.

LINQ Proveedores o Tipos

En los próximos artículos estaré profundizando sobre los distintos tipos, proveedores o tecnologías de LINQ, en concreto comentaremos sobre:

  1. LINQ to OBJECTS. Permite utilizar las instrucciones de consultas en objetos que están en la memoria.

  2. LINQ to XML. Permite acceder a documentos XML, veremos las clases que necesitamos para consultar XML.

  3. LINQ to ADO.NET. Permite utilizar las instrucciones de consultas en objetos de bases de datos. Esta característica se divide a su vez en otras tres tecnologías:

- LINQ to DataSet Proporciona mejoras en el acceso a datos con los ya conocidos DataSet.
- LINQ to SQL Proporciona acceso a bases de datos relacionales como objetos en el entorno .NET.
- LINQ to Entities Proporciona acceso a bases de datos relacionales como objetos en el entorno .NET.
 

En Visual Studio se pueden escribir consultas LINQ con cualquier colección de objetos que admita IEnumerable o la interfaz genérica IEnumerable(T).

Artículos Relacionados:

2 de enero de 2010

LINQ to Entities, Acceso a Datos

En este artículo veremos un ejemplo práctico y sencillo de uso de LINQ to Entities.

¿Que es LINQ to Entities?

LINQ to Entities es una nueva característica de acceso a datos que está basado en ADO.NET Entity Framework. Esta nueva forma de acceso a datos esta disponible a partir del Service Pack 1 del .NET Framework 3.5 y Visual Studio 2008.

LINQ to Entities, Primeros Pasos

Ado.Net Entity Data ModelVeamos un ejemplo práctico y sencillo de lo debemos hacer para comenzar a usar Linq to Entities.

Lo primero que debemos hacer es añadir un nuevo elemento al proyecto de tipo ADO.NET Entity Data Model, pulsamos en el botón Agregar y se iniciará el asistente.

Lo próximo en el asistente será decidir cual es el contenido del modelo de datos, en nuestro caso escogeremos “Generar el modelo desde una base de datos existente.”

Posteriormente seleccionaremos la cadena de conexión a la base de datos, en nuestro ejemplo crearemos una nueva cadena de conexión y además marcaremos la casilla que nos permite guardar dicha cadena en el fichero de configuración App.Config.

Ado.Net Entity Conexion

El último paso de este asistente es decidir cuales serán los objetos de la base de datos que queremos incluir en nuestro modelo de entidades. En nuestro caso escogimos la tabla Person y el procedimiento almacenado GetPerson. Indicamos además el nombre del espacio de nombres del modelo, en nuestro caso jqGridEjemploModel.

Ado.Net Entity Entidades

Y al finalizar obtenemos el siguiente modelo de datos:

Ado.Net Entity Modelo

Al observar junto a la ficha del Explorador de Soluciones, ahora encontraremos una nueva ficha Explorador de Modelos en la que encontraremos los diferentes objetos que tenemos en nuestro modelo de entidades (Entity Data Model).

Ado.Net Entity EDM

En el primer nodo, se muestra el modelo conceptual y en el segundo el modelo correspondiente a la base de datos, es decir, qué tablas, vistas o procedimientos almacenados tenemos mapeados al Entity Data Model.

 

LINQ to Entities, Ejemplo de Código

En este punto ya tenemos definido el modelo, veamos un ejemplo sencillo de uso del Modelo LINQ to Entities.

namespace LINQEjemplos
{
  class Program
  {
    static void Main(string[] args)
    {
      var db = new jqGridEjemploEntities();
     
      var personas = from p in db.Person
                     orderby p.Name
                     select p;
 
      foreach (var p in personas)
        Console.WriteLine("Nombre: {0} {1}, Nacido el: {2}", p.Name, p.LastName,            p.BirthDate.ToShortDateString());
    }
  }
}

El resultado de este código sería el de mostrar todos los elementos de la tabla Person:

Ado.Net Entity PersonY así de simple podemos usar toda la funcionalidad de Linq ligada con el acceso a datos, por ejemplo si solo quisiéramos mostrar los datos de aquellas personas que el nombre comience por S, la modificación al código sería la siguiente:

namespace LINQEjemplos
{
  class Program
  {
    static void Main(string[] args)
    {
      var db = new jqGridEjemploEntities();
     
      var personas = from p in db.Person
                     where p.Name.StartsWith("S")
                     orderby p.Name
                     select p;
 
      foreach (var p in personas)
        Console.WriteLine("Nombre: {0} {1}, Nacido el: {2}", p.Name, p.LastName,            p.BirthDate.ToShortDateString());
    }
  }
}

El resultado sería:

Ado.Net Entity Person S

Y cierro este artículo por aquí, aunque me queda pendiente escribir otro post relacionado con el tema, en el que explicaré como asociar un procedimiento almacenado a una función en el Modelo de Entidades de LINQ. Y además otro en el que exponga un ejemplo de actualización y persistencia de datos.

 

Nota: Para poder usar Linq To Entities, debes tener instalado Microsoft .NET Framework versión 3.5 SP1. Y como se base en ADO.NET Entity Data Model (EDM) debes tener también instalado el SP1 de Visual Studio 2008.

Ya Soy Desarrollador Cinco Estrellas PLATINO

El pasado 13 de diciembre hice el ultimo de los exámenes del programa Desarrollador Cinco Estrellas que me acreditaba como Desarrollador Cinco Estrellas GOLD. En el día de hoy realicé un examen más que me acredita con la próxima categoría de este programa Desarrollador Cinco Estrellas PLATINO.

Desarrollador Cinco Estrellas Platino 

¿Qué es el programa Desarrollador Cinco Estrellas?

Es un programa de capacitación online gratuita en Tecnologías .NET de Microsoft.

DCE tiene la virtud de iniciar en un nivel muy básico y llevarte hasta un nivel técnico bastante alto. Para ello cuenta con “La Biblioteca de las Estrellas”, donde encontraras los contenidos que podrás descargar y estudiar antes de presentarte a cada examen.

El plan de entrenamiento es el siguiente:

Una vez obtenida la 5ta estrella, se puede acceder a nueva información y exámenes. Aprobando 4 cursos opcionales serás catalogado como "Desarrollador Gold":

- ADO.NET Entity Framework.
- Windows Mobile 6.0.
-SQL Server 2008.
- Sharepoint Server 2007.

Después de haber obtenido la categoría de "Desarrollador Gold" puedes acceder a nuevos contenidos y aprobando un examen más serás catalogado como "Desarrollador PLATINO" (el último de los reconocimientos a día de hoy), los temas disponibles son:

- LINQ.
- Silverlight 2.0.

La principal razón por la cual estoy posteando sobre este programa en el día de hoy es porque acabo de conseguir mi Quinta Estrella PLATINO.

Nota: Para participar en el programa debes tener una cuenta Hotmail.