SharePoint 2010: Como enviar un elemento a la papelera de reciclaje con LINQ To SharePoint!

Como sabéis, cuando se elimina un documento de una biblioteca de documentos o un elemento de una lista de SharePoint, automáticamente se va a la papelera de reciclaje del usuario de forma que pueda recuperarlo dentro de la ventana de días de recuperación que se haya configurado en la papelera. Pero, ¿qué pasa si el borrado del elemento lo hacemos programáticamente utilizando LINQ To SharePoint? Pues que dependiendo de como hagamos el borrado, el elemento se irá o no a la papelera de reciclaje:

  • Si usamos el método DeleteOnSubmit(), el elemento será borrado de forma automática en cuanto hagamos un SubmitChanges() y no se irá a la papelera de reciclaje por lo que no podremos recuperarlo.
  • En cambio, si usamos el método RecycleOnSubmit() nos encontraremos con qué el elemento si irá a la papelera de reciclaje en cuanto hagamos un SubmitChanges() y por lo tanto será posible su recuperación de la misma.
  • Un ejemplo de borrado en LINQ To SharePoint con RecycleOnSubmit() es el siguiente:
   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6: //Espacios de nombres necesarios

   7: using Microsoft.SharePoint;

   8: using Microsoft.SharePoint.Linq;

   9: using SPLINQProxy;

  10:  

  11:  

  12: namespace SPLINQToSPCADemo

  13: {

  14:     class Program

  15:     {

  16:         static void Main(string[] args)

  17:         {

  18:             string sSharePointSite =

  19:                 "http://demo2010a:100/sites/PortalIntranet";

  20:             try

  21:             {

  22:                 using (SPLINQProxyDataContext ctx =

  23:                     new SPLINQProxyDataContext(sSharePointSite))

  24:                 {

  25:                     EmpresasItem EmpresaToDelete =

  26:                         (from e in ctx.Empresas

  27:                          where e.Title.Contains("Microsoft")

  28:                          select e).First();

  29:                     if (EmpresaToDelete!=null)

  30:                     {

  31:                         ctx.Empresas.RecycleOnSubmit(EmpresaToDelete);

  32:                         ctx.SubmitChanges();

  33:                         Console.WriteLine("Se ha borrado la empresa");

  34:                     }

  35:                 }

  36:             }

  37:             catch (Exception ex)

  38:             {

  39:                 Console.WriteLine("Error: {0}", ex.Message);

  40:             }

  41:  

  42:             Console.ReadLine();

  43:         }

  44:     }

  45: }

  • Si probamos el código anterior con la lista de ejemplo (Empresas), podremos ver que al eliminar un elemento de la misma este se va a la papelera de reciclaje.
image image

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *