martes, 19 de mayo de 2015

Eliminar Windows 10 desde el Dual Boot en Windows 8.1

Hola a todos, espero que la semana valla bien, este tutorial es para aquellos que instalaron Windows 10 desde el VHDX. como dual boot en Windows 8.1. Todo esto es en el marco del GameJam 2015 de Microsoft realizado el 15 y 16 de Mayo en el edificio corporativo de Microsoft Chile

Lo primero que debemos hacer es respaldar nuestro vhdx en algun disco externo luego de esto procedemos con los siguientes pasos para eliminar la entrada en el boot.

lunes, 18 de mayo de 2015

Extendiendo Linq en SharePoint 2010

Esto sera un breve manual de como extender de manera adecuada nuestra clase Linq generada con la herramienta SPMETA.EXE.


Me paso que nunca había utilizado Linq en SharePoint para mis desarrollos hasta que mi hermano me comento que esta tecnología era de lo mejor así que decidí intentarlo.

La situación fue la siguiente, se requiere disponer de una lista SharePoint en un webpart para poder generar un Slider. De manera que es necesario recuperar desde SharePoint la imagen y los textos asociados.

Comenzaremos con la lista SharePoint que guardara nuestros elementos.

La estructura de la lista es la siguiente:




Adicionalmente se utilizara una imagen que sera incrustada (attach) de manera nativa al elemento de lista.


Generando clase SPLinq.cs con SPMETAL.EXE

Este pequeño script que lo pueden guardar en la raíz de su proyecto en Visual Studio en mi caso se llama "GeneraSPLinq.bat"


@ECHO OFF

echo Generando SPLInq.cs

echo ************************************************

cd C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN

SPMetal.exe /web:http://de-moss2010-wfe:18013/ /code:C:\Users\victor.gaete.MOPTT\Desktop\PROYECTO_CNA\Proyecto_CNA\Proyecto_CNA\SPLinq.cs

echo ************************************************

echo SPLinq.cs generado

pause

El resultado de ejecutar este bat es la generacionde SPLinq.cs




Posteriormente esta clase SPLinq.cs debe ser agregada a Visual Studio.

Se debe tener en cuenta cuando se trabaje que hay que incorporar las siguentes referencias para el buen funcionamiento de la clase.



using Microsoft.SharePoint.Linq;

using Microsoft.SharePoint;

using System.Linq;


Utilizando SPLinq.cs



Una vez tenemos bien referenciada nuestras dependencias y la clase incorporada al proyecto podemos hacer la siguiente llamada para acceder a la lista.



SPLinqDataContext dc = new SPLinqDataContext(SPContext.Current.Web.Url);

EntityList<SliderInicioItem> SliderInicioItem = dc.GetList<SliderInicioItem>("SliderInicio");

            var sliderQuery = from slider in SliderInicioItem

                              select new

                              {

                                  slider.Id,

                                  slider.Title,

                                  slider.Subtitulo,

                                  slider.TextoPortada,
                              };

Hasta aquí, es ideal puesto que rapidamente recuperamos

  • Id
  • Title
  • Subtitulo
  • TextoPortada
¿Pero que pasa con la imagen?

Lamentablemente SPMETAL.EXE no es capas de generar un modelo que traiga datos mas complejos, es por esto que debemos extender nuestra clase linq para poder agregar de una manera transparente los campos que deseemos trabajar.


Extendiendo

Lo primero es crear una clase en nuestro Visual Studio con un nombre relativo a nuestra extencion, por ejemplo "SliderInicioExt" .


Se debe tener especial cuidado en este paso, al momento de crear la clase  se debe extender de la clase SliderInicioItem e implementar la interfaz ICustomMapping que es la que permite la extención del contexto de LINQ.

public partial class SliderInicioExt:SliderInicioItem,ICustomMapping


La interfaz implementa tres métodos MapFrom, MapTo y Resolve, en este caso revisaremos solo MapFrom, quedara para otra publicación MapTo y Resolve.

Finalmente la clase debería quedar como en el siguiente código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint.Linq; using Microsoft.SharePoint; using miproyecto.miwebpart; namespace miproyecto {     public partial class SliderInicioExt:SliderInicioItem,ICustomMapping     {         public void MapFrom(object listItem)         { throw new NotImplementedException();         }         public void MapTo(object listItem)         {             throw new NotImplementedException();         }         public void Resolve(RefreshMode mode, object originalListItem, object databaseListItem)         {             throw new NotImplementedException();         }     } }