Procedimiento para eliminar una propiedad administrada
El objeto Schema del modelo de objetos de administración de Enterprise Search proporciona acceso a las propiedades administradas configuradas en el servicio de búsqueda de un proveedor de servicios compartidos (SSP). Para obtener más información sobre el objeto Schema, consulte Administración de metadatos.
En el siguiente ejemplo se muestra cómo eliminar mediante programación una propiedad administrada mediante el modelo de objetos de administración de Enterprise Search en una aplicación de consola.
Para eliminar una propiedad administrada desde una aplicación de consola
En la aplicación, establezca referencias a los siguientes archivos DLL:
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
En el archivo de clases de la aplicación de consola, agregue las siguientes instrucciones using cerca de la parte superior del código, junto a las demás directivas de espacio de nombres.
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
Cree una función para escribir la información de uso en la ventana de la consola.
static void Usage() { Console.WriteLine("Delete Managed Properties Sample"); Console.WriteLine("Usage: DeleteManagedPropertiesSample.exe PropertyName"); }
En la función Main() de la aplicación de consola, agregue código para comprobar el número de elementos del parámetro args[]; debe ser igual a 1. De lo contrario, llame a la función Usage() definida en el paso 3.
if (args.Length != 1) { Usage(); return; }
Recupere el valor especificado en el parámetro
args[]
, que se usa para especificar el nombre de la propiedad administrada que se va a eliminar.string strName = args[0];
Para recuperar el objeto Schema para el contexto de búsqueda de SSP, agregue el siguiente código. Para obtener más información sobre las formas de recuperar el contexto de búsqueda, consulte Procedimiento: Devolver el contexto de búsqueda para el proveedor del servicio de búsqueda.
/* Replace <SiteName> with the name of a site using the SSP */ string strURL = "http://<SiteName>"; Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
Recupere la colección de propiedades administradas mediante el siguiente código.
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
Determine si la colección de propiedades administradas incluye la propiedad especificada.
if (properties.Contains(strName)) { Console.WriteLine(strName + " property does not exist. Delete failed."); return; }
Si el método Contains devuelve el valor true, recorra las propiedades administradas y compruebe para cada una, si la propiedad Name coincide con el valor de strName.
foreach (ManagedProperty property in properties) { if (property.Name == strName) {
A continuación, compruebe el valor de la propiedad DeleteDisallowed para confirmar que la propiedad se puede eliminar.
if (property.DeleteDisallowed) { Console.WriteLine("DeleteDisallowed enabled for " + strName + ". Delete failed."); return; }
Si la propiedad DeleteDisallowed devuelve el valor false, llame al método DeleteAllMappings y, a continuación, llame al método Delete para la propiedad.
property.DeleteAllMappings(); property.Delete(); Console.WriteLine(strName + " deleted."); return; } }
Ejemplo
A continuación se muestra el código completo para la muestra de clase de aplicación de la consola.
Requisitos previos
- Asegúrese de que ya se ha creado un proveedor de servicios compartidos.
Referencias del proyecto
Antes de ejecutar este ejemplo, agregue las siguientes referencias de proyecto al proyecto de código de aplicación de consola:
Microsoft.SharePoint
Microsoft.Office.Server
Microsoft.Office.Server.Search
using System;
using System.Collections;
using System.Text;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;
namespace DeleteManagedPropertiesSample
{
class Program
{
static void Main(string[] args)
{
try
{
if (args.Length != 1)
{
Usage();
return;
}
string strName = args[0];
/*
Replace <SiteName> with the name of a site using the SSP
*/
string strURL = "http://<SiteName>";
Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
if (!properties.Contains(strName))
{
Console.WriteLine(strName + " property does not exist. Delete failed.");
return;
}
foreach (ManagedProperty property in properties)
{
if (property.Name == strName)
{
if (property.DeleteDisallowed)
{
Console.WriteLine("DeleteDisallowed enabled for " + strName + ". Delete failed.");
return;
}
property.DeleteAllMappings();
property.Delete();
Console.WriteLine(strName + " deleted.");
return;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private static void Usage()
{
Console.WriteLine("Delete Managed Properties Sample");
Console.WriteLine("Usage: DeleteManagedPropertiesSample.exe PropertyName");
}
}
}
Vea también
Otros recursos
Administración de metadatos
Procedimiento: Devolver el contexto de búsqueda para el proveedor del servicio de búsqueda
Procedimiento para recuperar las propiedades administradas para un proveedor de servicios compartidos
Procedimiento para crear una propiedad administrada