September 2008 - Artículos
Como os comentaba el otro día, este jueves tendremos en Santander un evento muy interesante: Depuración y Optimización Avanzada de Aplicaciones. En dicho evento contaremos con dos de los cracks de Plain Concepts: Pablo Álvarez Doval y Luis Guerrero....el caso es que el evento ha generado mucho interés tanto en Cantabria como fuera de la comunidad, por lo que como experiencia piloto tenemos para todos vosotros una gran noticia: vamos a tratar de grabar y transmitir on-line el evento por cortesía de Microsoft (y más en concreto de Milagros). Para ello, y dada la duración de la sesión (8 horas), se han habilitado dos enlaces:
Esperamos que seáis muchos los que también podáis asistir online al evento, y crucemos los dedos para que no aparezca Murphy y no haya problemas en la grabación y transmisión del evento. Si la experiencia va bien, seguramente a partir de ahora intentemos al menos grabar, y posiblemente transmitir, los eventos que realicemos en el futuro.

Como os comentaba en este post, a la hora de visualizar información en la plataforma SharePoint, disponemos de un recurso bastante interesante: las páginas de web parts. Estas páginas de web parts se crean siguiendo el siguiente proceso:
- Desde el menú Site Actions pulsamos la opción Create.
- En la sección Web Pages elegimos Web Part Page.
- En la pantalla que se abre (página spcf.aspx que reside en el directorio _layouts del serividor de SharePoint).
Así, el resultado que se obtiene tras el proceso anterior es el siguiente:
Ahora bien, si os fijáis en la página que acabamos de crear, resulta que no aparece el menú vertical que por ejemplo tenemos en nuestro sitio principal. Este se debe a qué el menú se encuentra contraido en la página como consecuencia de que se ha incluido un Place Holder especial, con ID PlaceHolderLeftNavBar, que es el causante de que no se muestre el menú vertical.
| <asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"></asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"></asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderNavSpacer" runat="server"></asp:Content> |
Por lo tanto, basta con qué hablamos la página con SharePoint Designer 2007 y eliminemos el place holder comentado para lograr que se visualice el menú (Nota: No podemos simplemente comentarlo, porque SharePoint no lo permite). Y de este modo, obtenemos el resultado esperado.
Desde ayer por la tarde ya tenemos disponible la primera release candidate (RC) de Silverlight 2.0 tal y como nos anuncia Scott Guthrie en su blog. Como nos comenta Scott, en esta primera RC se liberan únicamente el Silverlight Runtime Developer Edition así como las tools de VS y Blend para soportarlo. Podéis descargaros ambos elementos de este enlace.
En cuanto a los cambios que vienen con esta RC:
- A nivel de API, podéis encontrar toda la información en este post y este documento.
- A nivel de controles, hay muchas novedades:
- Tres nuevos controles: ComboBox, ProgressBar y PasswordBox. Con la release final de Silverlight, tendremos más controles añadidos a estos.
- Nuevos template skin.

Microsoft acaba de actualizar el el VHD pre-configurado con una instalación completa de MOSS de cara a evaluarlo. Aunque este VHD ya estaba disponible, caducaba a finales de este mes...lo que sin duda iba a poner en aprietos a más de alguno (me incluyo). Afortunadamente, desde Microsoft se han dado prisa y ya tenemos un nuevo VHD que estará operativo hasta enero de 2010. Lo único que necesitaremos es activar la licencia de Windows Server 2003. Como en la versión previa, este VHD viene con una instalación completa de MOSS, un directorio activo integrado (el famoso LITWAREDEMO), todo el paquete de Microsoft Office 2007 disponible y con Visual Studio 2005 instalado.
Podéis descargaros el VHD de este enlace.

Cómo sabéis, uno de los productos que estará dentro de la estrategia Software + Services (S+S) es SQL Data Services, o lo que es lo mismo, la plataforma de servicios over the cloud que permitirá a las organizaciones almacenar y consultar datos desde cualquier lugar y en cualquier momento. Pues bien, en el mundo de plataformas de datos, tenemos que además de Microsoft aparecen Oracle y Sun MySQL como jugadores clave.

En este sentido, tanto Oracle como Sun acaba de lanzar de manera simultáneamente sus plataformas de datos en la nuve: Oracle 11g and Sun MySQL on Amazon AWS EC2. Además, no se tratan de servicios en versión beta, sino que ya están plenamente operativos y disponibles en la nube.
Sin duda, esta este anuncio es un impulso hacia el modelo de SaaS (S+S en mundo Microsoft). Además de la disponibilidad de estos servicios, Oracle ha anunciado que sus clientes pueden usar sus licencias existentes sin coste adicional para desarrollar productos que soporten estos servicios. Es más, Oracle ofrece Amazon Machine Images (AMIs) gratuitas para habilitar el desarrollo de estas aplicaciones con Oracle Application Express, Oracle JDeveloper, Oracle Enterprise Pack for Eclipse y Oracle Workshop para Weblogic. Podéis encontrar más información sobre Oracle sobre Amazon AWS EC2 en este enlace.

En el caso de Sun MySQL sobre EC2, parece que no se ha generado el mismo movimiento ni existen las mismas ventajas que en el caso de Oracle aparte del anuncio comentado.
Una vez más, os presentamos el recopilatorio (con periodicidad mensual) de recursos interesantes que han aparecido sobre la plataforma SharePoint durante las últimas semanas. En esta ocasión, hemos seleccionado los siguientes contenidos.
Artículos, Recursos & Documentación

Tips & Tricks
Herramientas & Novedades


Y hasta aquí llega esta nueva entrega del recopilatorio de recursos sobre SharePoint. Espero que os sirva de ayuda.
Si hace un momento os detallaba una serie de herramientas de qué disponemos para desarrollar en plataforma SharePoint, ahora le llega el turno a las últimas novedades que desde Microsoft nos llegan para facilitar el desarrollo en plataforma SharePoint:
- La primera es qué desde el viernes tenemos disponible una nueva imagen VPC en la que tenemos instalado Windows SharePoint Services 3.0 SP 1 instalado, Visual Studio 2008, y las Visual Studio 2008 extensions for Windows SharePoint Services. Podéis descargaros la imagen de este enlace. Además, en la imagen encontraremos una serie de hand-on labs.
- Se ha actualizado el Introduction to SharePoint Development site.
- Los hand-on labs podéis encontrarlos en este enlace.
- Se han actualizado las ppts de los web casts.
Todos estos recursos están en http://MSSharePointDeveloper.com.

Cuando personalizamos o desarrollamos elementos y soluciones para SharePoint, no sólo utilizamos SharePoint Designer 2007 y Visual Studio, sino que podemos ayudarnos de gran cantidad de herramientas disponibles en la red (gratuitas en su mayoría) y que han ido apareciendo en la comunidad para facilitar nuestro trabajo como implementadores de soluciones SharePoint. En este post, he pretendido recoger las herramientas que considero más importantes en el desarrollo de soluciones SharePoint.
| Herramienta | Descripción | Uso |
| Windows Server 2008 Hyper-V | Permite hostear y administrar máquinas virtuales (MV’s). | Hoster de MV’s |
| Virtual PC 2007 SP1 | Utilidad gratuita de Microsoft para la creación de MV’s. | Creación de MV’s |
| Windows Server 2003 / Windows Server 2008 (32 Bits) | Sistema Operativo (S.O) de la MV de desarrollo. Es necesario que sea la versión de 32 bits, puesto que las VSeWSS no funcionan en una máquina de 64 bits | S.O del entorno de desarrollo. |
| Visual Studio 2008 (SP1) | Entorno de desarrollo (IDE) dónde se crearán workflows, web parts, menejadores de eventos, etc. | IDE |
| SQL Server Express / Standar /Enterprise | Para gestionar cualquier BD que se necesite integrar en SharePoint, o bien las propias BD’s de SharePoint. | Plataforma de datos de Microsoft. |
| Office SharePoint Designer 2007 | Entorno para la personalización y branding de sitios SharePoint. | Herramienta de Diseño |
| Microsoft Office Professional Edition | Suite de Office. | Suite de Office |
| Microsoft Office SharePoint Server 2007 SDK | Como todo SDK que se precie, viene equipado con documentación, demos y código para probar las capacidades de MOSS. | SDK |
| Windows SharePoint Services 3.0 SDK | Con menos contenido que el SDK de MOSS, pero con el mismo cometido. | SDK |
| VSeWSS 1.2 | Visual Studio Extensions para WSS versión 1.2…sin duda, este Add-In es imprescindible para facilitar el desarrollo de los elementos típicos de SharePoint. | VS2008 Add-in |
| .NET Reflector | Herramienta imprescindible para saber que hacen muchos de los ensamblados que utiliza SharePoint. O simplemente analizar lo que hacen otras soluciones. | Herramienta de Ingeniería inversa. |
| U2U CAML Query Builder and Execution Tool | Una herramienta imprescindible para crear y probar consultas CAML. | Query Tool |
| CAML.NET | Otra herramienta que nos permite crear consultas CAML. | Query Tool |
| YACAMLQT | Otra herramienta que nos permite crear de manera sencilla consultas CAML. | Query Tool |
| Stramit SharePoint 2007 CAML Viewer | Otra herramienta que nos permite crear y probar de manera sencilla consultas CAML. | Query Tool |
| SharePoint Manager 2007 | Explorador del modelo de objetos de SharePoint, que permite desactivar features, actualizar propiedades y desgranar un sitio de SharePoint | Explorador de sitios SharePoint |
| WSPBuilder | Herramienta de creación de paquetes WSP para WSS 3.0 & MOSS. | Creador de paquetes WSP |
| SharePoint 2007 Features | Proyecto de Codeplex con una serie de features útiles para desarrollo de soluciones SharePoint: Debugger feature, Log Viewer, … | SharePoint 2007 Features |
| Application Pool Recycle Utility | Aplicación que permite realizar un reciclaje rápido de los application pools de SharePoint. | Application Pool Recycle Utility |
| Smart Part de Jan Tielens | Web Part imprescindible para mostrar y utilizar de manera sencilla los controles de usuario que creemos para SharePoint | Smart Part |
| STSDEV | Utilidad que permite generar proyectos y soluciones de Visual Studio que faciliten el desarrollo de componentes para SharePoint. | STSDEV |
| SPDeploy | Otra herramienta más que permite realizar customizaciones de SharePoint en Visual Studio y luego llevarlas al servidor. | SPDeploy |
| STSADM | STSADM proporciona una gran flexibilidad a la hora de administrar e implementar soluciones SharePoint. Además, es extensible y se le pueden añadir nuevas opciones. Una referencia completa de STSAM la tenéis en este enlace. | STSADM |
| BDC Meta Man | Herramienta para la creación de archivos de definición de BDC’s de MOSS. El problema es que no es gratuita. | BDC Tool |
| Ejemplos de Ted Pattison | Ejemplos de desarrollos de SharePoint de Ted Pattison. | Ejemplos |
| Patterns & Practices SharePoint Guidance | Patrones y buenas prácticas para el desarrollo de soluciones SharePoint. | Patrones y buenas prácticas. |
| Fiddler | Un gran analizador para entender que información se está intercambiando entre el navegador y SharePoint. | HTTP Debugger |
| Internet Explorer Developer Toolbar | Add-On para Internet Explorer que nos permite visualizar fácilmente las CSS aplicadas, accede al DOM de manera sencilla, etc. | DOM/CSS/Browser Debugger |
| NotePad++ | Muy útil para visualizar el código fuente de una página. | Ver código fuente, editor de texto |
Otros enlaces sobre el tema:
Y hasta aquí llega este post sobre herramientas para el desarrollo en plataforma SharePoint. Espero que el post os resulte útil, y sobre todo que añadáis vuestras propias contribuciones.
Si hace unos días os hablaba del Chart Advisor para Excel 2007 y del E-Mail Prioritizer para Outlook 2007, hoy os voy a presentar otro excelente Add-On gratuito excelente creado por Office Labs y pensado para PowerPoint 2007: PPTFlex. Esta utilidad nos permite realizar presentaciones de manera espectacular gracias a que utiliza un canvas que permite realizar zoom a distintos niveles...de este modo, las presentaciones lineales pasarán a la historia...y como muestra, aquí os dejo un vídeo de PPTFlex.
Url del vídeo
Podéis descargaros PPTFlex de este enlace.
Recientemente en un proyecto en el que estamos trabajando en el CIIN (por supuesto, es un proyecto de SharePoint ;-)), surgió la necesidad de visualizar una serie de elementos de una lista de SharePoint en una web part...este listado tenía la peculiaridad de que los campos de información podían ser imágenes, links, etc. Entonces, lo primero que tuvimos que decidir es cuál de los elementos de visualización de ASP.NET nos podría resolver la papeleta...tras varias pruebas con distintos controles propios de ASP.NET, optamos por realizar una primera prueba con el control de datos GridView. Ahora bien, no es lo mismo utilizar un control de este tipo cuando desarrollamos una página ASP.NET que cuando desarrollamos una Web Part. En el primero de los casos, tenemos la opción drag & drop que nos da el diseñador de Visual Studio 2008, de manera que:
- Basta con arrastrar un control de tipo GridView a la superficie de diseño.
- Acceder a la opción Edit Columns disponible en el smart menú del control para añadir las columnas necesarias.
- Especificar los campos del GridView y su tipo. Podemos disponer de 7 tipos de campos: BoundField, CheckBoxField, HyperLinkField, ImageField, ButtonField, CommandField y TemplateField.
- Configuramos las propiedades de los campos añadidos y listo. Ya sólo tenemos que hacer el binding con los datos, y nuestro control GridView mostrará datos...fácil!
Pero, ¿Y qué pasa cuando desarrollamos web parts de SharePoint? Pues que no disponemos de ningún tipo de ayuda visual, por lo que no nos queda más remedio que intentar añadir los tipos de campo de las columnas de manera programática...¿es esto posible? Como no podía ser de otra forma, la respuesta es que sí, y tras indagar un poco en la red, llegué a la solución que a continuación os plasmo:
| using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; namespace MouroWeb { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Origen de datos DataTable dtDatos = new DataTable(); dtDatos.Columns.Add("Imagen"); dtDatos.Columns.Add("Url"); DataRow dtRow = dtDatos.NewRow(); dtRow["Imagen"] = "Imagenes/Logo_CIIN_pq.gif"; dtRow["Url"] = "CIIN"; dtDatos.Rows.Add(dtRow); //Añadiendo columnas al grid GridView1.AutoGenerateColumns = false; //Columna tipo imagen ImageField imfImagen = new ImageField(); imfImagen.ShowHeader = true; imfImagen.HeaderText = "Imagen"; imfImagen.DataImageUrlField = "Imagen"; DataControlField dcfControl = imfImagen; GridView1.Columns.Add(dcfControl); //Columna tipo Hyperlink HyperLinkField hlfLink = new HyperLinkField(); hlfLink.ShowHeader = true; hlfLink.HeaderText = "URL"; hlfLink.DataTextField="Url"; hlfLink.NavigateUrl = "http://www.ciin.es"; dcfControl = hlfLink; GridView1.Columns.Add(hlfLink); //Haciendo el binding... GridView1.DataSource = dtDatos; GridView1.DataBind(); } } } |
Como veis, en el código anterior simplemente:
- Definimos un origen de datos (un objeto de tipo DataTable) con unos datos de prueba.
- Especificamos que la propiedad AutoGenerateColumns del objeto GridView utilizado esté a false.
- Definimos objetos del tipo de campo a añadir que necesitemos y los configuramos según nuestras necesidades (y siguiendo la definición de la fuente de datos). En este caso he definido un objeto de tipo ImageField y otro de tipo HyperLinkField.
- Añadimos las columnas con el tipo de dato al control GridView. Para ello usamos un objeto de tipo DataControlField.
- Especificamos cuál es la fuente de datos para el control GridView (el objeto DataTable).
- Hacemos el correspondiente DataBind.
Sin más, probamos la solución y ya está.

Cuando desarrollamos Software, pasamos por una serie de etapas, desde el diseño hasta el despliegue final, en las que buscamos proporcionar soluciones que resuelvan de forma excelente los problemas y requerimientos planteados. Sin embargo, el camino no es fácil y muchas veces nos olvidamos de aspectos muy importantes como son la depuración, la optimización y el testeo de nuestras aplicaciones como camino a lograr aplicaciones con el mayor nivel de calidad posible. Para cubrir esta etapa imprescindible en todo desarrollo de software, el CIIN en colaboración con Plain Concepts ha preparado una nueva jornada de la que se puede hablar durante días y días: Depuración y Optimización Avanzada de Aplicaciones.
La jornada que os proponemos será gratuita por cortesía de Plain Concepts y constará de un repaso de la depuración básica con Visual Studio, profiling de problemas de rendimiento y depuración avanzada con WinDbg. Se tocarán temas como análisis de rendimiento y pruebas de carga, localización de puntos calientes y cuellos de botella, resolución de problemas esquivos (cuelgues, pérdidas, bloqueos, CTDs…) tanto en vivo como de modo postmortem mediante el análisis de volcados de memoria y otras técnicas de depuración. También se abordarán, durante el transcurso de la sesión, aspectos de soportabilidad como la construcción de un servidor de símbolos sincronizados, la generación de volcados de memoria en nuestras aplicaciones, etc. Como viene siendo habitual, la parte teórica irá acompañada de demostraciones prácticas sobre escenarios habituales de optimización y resolución de problemas.

En esta ocasión contaremos con la presencia de Pablo Álvarez Doval. Pablo ha estado vinculado a las tecnologías Microsoft desde el inicio de su carrera profesional, y fue miembro del GTSC de Microsoft en el equipo de SQL Server. Actualmente es uno de los plain boys de Plain Concepts, donde lidera la iniciativa DOT (Debugging & Optimization Team), destinada a ayudar a sus clientes en la resolución de problemas de rendimiento o problemas de difícil trazabilidad. Dispone de un blog en http://geeks.ms/blogs/palvarez, donde aborda principalmente temas de rendimiento, WinDbg y SQL Server.
Datos de interés del evento:
- Audiencia: Desarrolladores, Jefe de Proyecto.
- Requisitos previos: Conocimientos del entorno Visual Studio 2005 / Visual Studio 2008, lenguajes .NET en general y C# en particular.
- Fecha: jueves 2 de octubre.
- Hora: 09:00 a 18:30.
- Duración aproximada: 8 horas.
- Precio: Gratuito.
- Ponente: Pablo Álvarez Doval (Plain Concepts, integrante del Debbuging and Optimization Team).
- Lugar:
Centro de Innovación en tecnología de integración (CIIN)
C/ Pasaje de la Peña Nº 4 2º Piso Local 16
39008 Santander
España
Podéis inscribiros al evento a través de este enlace...esperamos veros por Santander.

Microsoft acaba de liberar la versión 1.0 de su aplicación de social bookmarking destinada a que los profesionales IT puedan compartir de manera sencilla favoritos, publicar contenido generado en la comunidad o buscar y conectar a estos profesionales entre sí. Esta primera release está disponible para MSDN, TechNet, y Microsoft Expression.
Entre las capacidades de esta aplicación, tenemos la posibilidad de suscribirnos a los tags que seleccionemos, soporte para 12 idiomas, acceso en todo momento a un resumen de nuestra contribución a la comunidad, herramientas de importación de otros servicios de bookmarking, además del uso de una preview de MSDN Code Search que nos anunciaba Bruno Capuano...por supuesto, para empezar a utilizar esta herramienta sólo se necesita un Windows Live ID.
Desde el pasado 11 de septiembre tenemos disponible para descarga el SP1 en castellano de Visual Studio 2008 y .NET Framework 3.5. Los enlaces de descarga son los siguientes:
Como sabéis, una de las posibilidades que ofrece la plataforma SharePoint para hacer backup & restore de sitios son las plantillas de sitio. Están son unos archivos .stp que contienen la estructura de un sitio y su subisitio, incluyendo listas, bibliotecas, etc...e incluso contenidos si así se ha especificado. Para crear una plantilla de sitio hay que seguir el siguiente proceso:
De esta forma, la plantilla aparece disponible en la galería de plantillas de sitio y la podemos utilizar para crear nuevos subsitios. Ahora bien, ¿es posible utilizar estas plantillas de sitio para crear Sitec Collections de SharePoint? La respuesta es que sí, y los pasos para hacer disponible esta plantilla en la creación de Site Collections de SharePoint (WSS 3.0 & MOSS) son los siguientes:
- Guardar la plantilla en el directorio local de instalación de SharePoint. En mi caso, la he guardado directamente en el propio directorio dónde reside la utilidad stsadm:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN
- Abrimos la interfaz de comandos y nos vamos al directorio dónde esta la utilidad stsadm.
- Especificamos el siguiente comando: STSADM -o AddTemplate -filename "Nombre Plantilla.stp" -title "Nombre Plantilla" (Podéis consultar la ayuda de esta opción medainte STSADM -Help AddTemplate).
- Hacemos iisreset.
Una vez añadida la plantilla, verificamos que aparece como disponible para crear nuevos Site Collections.
Sin más, hasta aquí llega este artículo. Espero que el post os haya resultado interesante.
Como sabéis, entre las múltiples plataformas tecnológicas de Microsoft, últimamente está muy de moda la plataforma Windows Live que permite está compuesta por numerosos elementos que permiten enriquecer la web y proporcionar una serie de utilidades al usuario final...seguro que muchos conocéis los Windows Live Spaces, tenéis operativo vuestro Skydrive o utilizáis Windows Live Messenger...yo además de todos estos me he acostumbrado a utilizar otras herramientas muy útiles de la plataforma como Windows Live Writer para escribir de forma sencilla en Geeks.Ms y otros blogs, Windows Live Mail para gestionar mi correo de MSN o Windows Live Photo Gallery para gestionar mis fotografías...el caso es que la plataforma Live continuamente está generando nuevas e interesantes utilidades. La última es Windows Live Video Messages Beta.
Esta herramienta permite combinar el correo electrónico tradicional con la posibilidad de enviar/recibir mensajes como vídeos digitales a coste cero. Para utilizar este servicio (gratuito) necesitaremos:
- Una Web Cam.
- Una conexión de banda ancha.
- IE 6 o posterior.
- Tener instalado Microsoft Silverlight 2 Beta 2.
- Tener una cuenta de Windows Live.
- El sistema operativo ha de ser como mínimo Windows XP SP2.
Básicamente, podremos enviar mensajes de vídeo a nuestros contactos de Windows Live Messenger u otras cuentas de correo sin más que añadirlas como destinatarios y darle al play. Además, disponemos de 2 GB de almacenamiento para los mensajes de vídeo que recibamos. En mi opinión, esta utilidad es excelente y sin duda supone un paso más en la evolución en la forma que tenemos de comunicarnos con nuestros iguales.
El equipo de SharePoint Enterprise Conten Management (ECM) acaba de anunciar el lanzamiento de la especificación del Content Management Interop Services (CMIS). Se trata de un esfuerzo de estandarización para sistemas ECM lanzado por Microsoft y el resto de grandes jugadores del mercado como IBM, EMC, Alfresco, OpenText, SAP y Oracle. El objetivo de CMIS es definir una serie de servicios web estándar que permitan la interoperabilidad de sistemas ECM como MOSS, EMC Documentun, IBM FileNet y otros.
Podéis encontrar más información respecto a este anuncio en los siguientes enlaces:
Siguiendo con las pruebas de ADO.NET Entity Framework (ADO.NET EF) comenzadas en este post, en esta nueva entrega vamos a hablar de uno de los elementos de EF: Entity Client. Se trata de un nuevo proveedor de datos que aparece con EF y que permite realizar consultas a entidades de un modelo conceptual. Para ello emplea el lenguaje Entity SQL (eSQL) que permite realizar consultas al modelo independientemente de la tecnología de base de datos subyacente. Empecemos.
Entity Client
Lo primero que tenemos que hacer es añadir una referencia al espacio de nombres EntityClient.
Añadimos las correspondientes sentencias using relativas a los espacios System.Entity y System.Data:
| using System.Data; using System.Data.EntityClient; |
A continuación vamos a definir una consulta al EDM mediante Entity Client:
| var ecConexion = new EntityConnection(); ecConexion.ConnectionString = "Name=AdventureWorksLTContext"; var ecComando = ecConexion.CreateCommand(); ecComando.CommandText = "SELECT VALUE p from AdventureWorksLTContext.Product AS p"; ecConexion.Open(); var ecReader = ecComando.ExecuteReader(CommandBehavior.SequentialAccess); Console.WriteLine("******Query******"); Console.WriteLine(ecComando.ToTraceString()); Console.ReadLine(); Console.WriteLine("******Resultados******"); while (ecReader.Read()) { Console.WriteLine("Producto: {0}", ecReader["Name"]); } ecConexion.Close(); Console.ReadLine(); |
Como vemos, lo que estamos haciendo en el código anterior es:
- Definir una instancia de EntityConnection que representa la conexión al EDM. Esta conexión está plenamente identificada por el nombre del EntityContainer (AdventureWorksLTContext), si bien podríamos especificar la cadena de conexión completa (referenciar a las tres capas que constituyen el EDM). Sin embargo, no necesitamos especificar la cadena de conexión completa dado que el EDM está en el mismo ensamblado que el consumidor.
- Definimos una instancia del objeto EntityCommand que representa la consulta que vamos a realizar al modelo. Esta consulta la estamos definiendo en Entity SQL (eSQL). De esta consulta destacaría que usa la palabra clave VALUE, lo que le indica al runtime que no envuelva el resultado de la consulta como una fila e datos.
- Abrimos la conexión al modelo.
- Ejecutamos el comando mediante un objeto de tipo EntityDataReader.
- Mediante reflexión y el método ToTraceString, obtenemos la consulta que se envía a la BD subyacente al modelo.
- Leemos el resultado de la ejecución del comando mediante el método Read() del objeto EntityReader.
- Cerramos la conexión al modelo.
Tras ejecutar el código anterior:
- Por un lado, tenemos la consulta enviada a la BD.
- Por otro, tenemos el resultado de la consulta.
Al igual que ocurre con T-SQL convencional, eSQL permite definir consultas parametrizadas. Por ejemplo, podemos realizar una consulta sobre la entidad Product aplicando un filtro a la columna Name:
| Console.ReadLine(); Console.WriteLine("******Consulta parametrizada******"); ecComando.Dispose(); ecComando = ecConexion.CreateCommand(); ecComando.CommandText = "SELECT p.Name FROM AdventureWorksLTContext.Product AS p " + "WHERE Length(p.Name)>@iLongitud"; ecComando.Parameters.AddWithValue("iLongitud", 30); ecReader = ecComando.ExecuteReader(CommandBehavior.SequentialAccess); Console.WriteLine("******Query******"); Console.WriteLine(ecComando.ToTraceString()); Console.ReadLine(); Console.WriteLine("******Resultados******"); while (ecReader.Read()) { Console.WriteLine("Producto: {0}", ecReader["Name"]); } ecConexion.Close(); Console.ReadLine(); |
Como vemos en el código anterior:
- En primer lugar liberamos los recursos que usa el objeto EntityCommand.
- Creamos un nuevo comando que utiliza un parámetro.
- Le añadimos el parámetro al EntityCommand a través de la definición de un EntityParameter.
- Ejecutamos la consulta.
- Mostramos la consulta enviada.
- Ejecutamos la consulta.
Los resultados obtenidos en este caso son los siguientes:
Como veis, la API EntityClient permite crear rápidamente consultas a un EDM utilizando un estilo similar al tradicional ADO.NET.
Cuando entramos por primera vez a My Site como usuario SharePoint nos muestrea una lista de posibles compañeros, esta lista se genera automáticamente filtrando todos los perfiles de usuario cuya propiedad manager y grupo de trabajo sean las mismas que las del usuario que se conecta.

Luego, el usuario tiene la posibilidad de elegir otros compañeros, eliminar los de la lista de sugerencias.
Además, si nos fijamos en esta WebPart podemos observar que existe un control de presencia representado por un circulo que se pone de color verde cuando el usuario está activo, me explico, este control de presencia esta representado por un control ActiveX que lo único que hace es dirigir consultas desde el sitio a la dirección de correo electrónico y representa el estado del usuario, si esta conectado en ese momento en Outlook, Messenger u Office Communicator con su cuenta.
Continuará...
En el apartado de "Miembro de..." se muestran los grupos o listas de distribución a los que el usuario pertenece. Este apartado podemos configurarlo, agregando más listas de distribución o cambiando a grupos de SharePoint. También podemos establecer el nivel de seguridad:
Continuará...
Esta WebPart de My Profile nos muestra en todo momento lo que tenemos en común con el usuario propietario del My Site que visitamos (Amy) desde la vista de nuestro usuario (Cesar). Si en nuestro caso visitamos nuestro propio My Site no nos mostrará nada de nada.
Los datos, una vez más, los recoge SharePoint de las propiedades de los dos perfiles de usuario y busca coincidencias:
- Mismo Supervisor (se da en nuestro caso: Patricia Doyle)
- Compañeros de trabajo
- Mismo Grupo de trabajo.
Continuará...
Más artículos
Página siguiente >