Share via


Procedimiento para ejecutar un método en una entidad

Las entidades contienen métodos. Para ejecutar los métodos que están disponibles en una entidad, el objeto Entity proporciona el método Execute.

Los dos ejemplos de código de este tema muestran cómo usar el método Execute para realizar una ejecución del método sin procesar. El método de ejemplo ExecuteEntityOverrideArgs reemplaza los valores predeterminados de los parámetros por diferentes valores antes de ejecutar la llamada al método.

Ejemplo

En este ejemplo se muestra cómo usar el método Execute para realizar una ejecución del método sin procesar. Este método ExecuteEntityOverrideArgs del ejemplo también muestra cómo se reemplazan los valores predeterminados de los parámetros por diferentes valores antes de la ejecución.

Nota

Aunque en este ejemplo se ejecuta un método Finder, normalmente no se usará Entity.Execute para ejecutar métodos Finder. Para ejecutar métodos de tipo Finder y Filter, se deben usar los métodos FindFiltered y FindSpecific.

Requisitos previos

  • Asegúrese de que el proveedor de servicios compartidos ya está creado.

  • Reemplace el valor constante EnterYourSSPNameHere en el código por el nombre del proveedor de recursos compartidos.

  • Asegúrese de que LobSystem y los nombres de entidad a los que se hace referencia en el ejemplo existan en el Catálogo de datos profesionales. Use nombres válidos.

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.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class ExecuteEntity
    {
        const string yourSSPName ="EnterYourSSPNameHere";

        static void Main(string[] args)
        {
            SetupBDC();
            ExecuteEntity();
            ExecuteEntityOverrideArgs();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }

        static void ExecuteEntity()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            MethodInstance methInst = prodEntity.GetFinderMethodInstance();
            IEntityInstanceEnumerator prodEntityInstanceEnumerator =
                (IEntityInstanceEnumerator)prodEntity.Execute(methInst,
                AdvWorksIns);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }
        static void ExecuteEntityOverrideArgs()
        {
            NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
            LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
            Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
            MethodInstance methInst = prodEntity.GetFinderMethodInstance();
            Object[] args = methInst.GetMethod().CreateDefaultParameterInstances(methInst);
            //Min ProductID
            args[0] = 1;
            //Max Product ID
            args[1] = 10;
            IEntityInstanceEnumerator prodEntityInstanceEnumerator =
                (IEntityInstanceEnumerator)
                prodEntity.Execute(methInst, AdvWorksIns, ref args);
            while (prodEntityInstanceEnumerator.MoveNext())
            {
                IEntityInstance IE = prodEntityInstanceEnumerator.Current;
                foreach (Field f in prodEntity.GetFinderView().Fields)
                    Console.Write(IE[f]);
                Console.WriteLine("");
            }
        }  
    }
} 

Vea también

Otros recursos

Catálogo de datos profesionales: modelo de metadatos
Exploración del repositorio de metadatos y ejecución de métodos y filtros
Creación de aplicaciones personalizadas mediante el Catálogo de datos profesionales