Del via


Genbruge definition af objektsøgning i den brugerdefinerede kode

 

Udgivet: november 2016

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

Objektsøgning i Unified Service Desk vises som en tjeneste til udviklere, så de ved hjælp af programmering kan bruge en eksisterende definition på objektsøgning i deres brugerdefinerede kode til at søge i Microsoft Dynamics 365-data. Objektsøgninger i Unified Service Desk bruger FetchXML til at forespørge på Dynamics 365-webtjenester til at returnere data. Du kan finde flere oplysninger om definition af objektsøgninger under Søge efter data ved hjælp af objektsøgninger i Unified Service Desk.

Når du konfigurerer en objektsøgning, kan du vælge, om du vil have returneret et helt søgeresultatsæt, eller om du vil gå fra side til side i FetchXML-resultaterne for store datasæt ved hjælp af en sideopdelingscookie, så ydeevnen forbedres. Du kan finde flere oplysninger om brug af sideopdelingscookie sammen med FetchXML under Sideopdele store resultatsæt med FetchXML.

Da du bruger et navn på objektsøgning i koden til at returnere data og ikke FetchXML-definitionen, sikres det via opdatering af den underliggende FetchXML-forespørgselsdefinition af objektsøgningen Unified Service Desk uden ændring af navnet på enhedssøgningen, at du ikke behøver at opdatere din brugerdefinerede kontrolkode, rekompilere og distribuere den på klientcomputerne..

Brug den nye EntitySearchRequest-meddelelse til at konstruere en anmodning, og send derefter anmodningen som parameter til EntitySearchService. GetEntitySearchResults-metoden for at få svaret (EntitySearchResponse).

Dette emne indeholder

Oprette et EntitySearchRequest-objekt

Udfør anmodningsobjektet

Oprette et EntitySearchRequest-objekt

EntitySearchRequest-meddelelsen er overbelastet, og du skal bruge en af følgende tre konstruktører til at oprette et anmodningsobjekt, afhængigt af hvordan du vil have returneret posterne. Oprettelse af et anmodningsobjekt uden brug af en af disse tre konstruktører understøttes ikke. Før du bruger et navn på en objektsøgning i anmodningsobjektet, skal du sørge for, at objektsøgningen allerede er defineret i Unified Service Desk på din Dynamics 365-forekomst.

  • Opret et anmodningsobjekt kun ved hjælp af navnet på objektsøgningen. Brug denne konstruktør til at returnere alle poster som resultat af objektsøgningen.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);
    
  • Opret et anmodningsobjekt ved hjælp af navnet på objektsøgningen og det maksimale antal poster, der skal returneres. Brug denne konstruktør til at begrænse antallet af poster, der returneres som resultat af objektsøgningen.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName, int maxCount);
    

    Tip

    Angiv 0 for parameteren maxCount for at returnere alle poster.

  • Opret et anmodningsobjekt ved hjælp af navn på objektsøgning, sideantal, sidetal og sideopdelingscookie. Du kan bruge denne konstruktør til at returnere store datasæt i sider, så ydeevnen forbedres.

    Parameteren pageCount definerer antallet af poster, der returneres pr. side. Parameteren pageNumber definerer sidetallet for resultatsættet, der returnerer dataene. Hvis forespørgslen f.eks. returnerer 500 poster, kan du angive pageCount som 50 for at returnere 50 poster på en side, hvilket indebærer, at du får 10 sider med data (50 poster * 10 sider = 500). Hvis du vil returnere poster 100-150, skal du angive pageNumber-værdi som 3. Du skal angive pageCookie som empty for at hente den første side af resultatsættet.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName, int pageCount, int pageNumber, string pageCookie);
    
    System_CAPS_noteBemærkning

    Når du udfører anmodningsobjektet ved hjælp af denne konstruktør for at hente resultater i sider, angiver EntitySearchResponse. HasMoreRecords-egenskaben i svarobjektet, om der er flere poster (værdi = 1). Desuden er værdien af EntitySearchResponse. PageCookie-egenskaben indstillet til den sideinddelingscookie, der er returneret fra de aktuelle resultater.

Udfør anmodningsobjektet

Brug metoden EntitySearchService. GetEntitySearchResults til at afvikle det anmodningsobjekt, der er oprettet som beskrevet i forrige afsnit. Denne metode udfører EntitySearchRequest-objektet og returnerer et EntitySearchResponse-objekt med resultaterne af objektsøgningen.

Følgende kodeeksempel demonstrerer, hvordan du kan genbruge en eksisterende objektsøgning til at hente resultaterne i sider.

// Define parameters for the entity search request object.
string entitySearchName = "Sample Entity Search"; // Name of the entity search record defined in Unified Service Desk
int pageCount = 10; // Retrieve 10 records per page.
int pageNumber = 0;
string pageCookie = String.Empty; // Retrieve the first page of the result set.

var entityService = AifServiceContainer.Instance.GetService<IEntitySearchService>();

// Create a request object.
EntitySearchRequest entitySearchRequest = new EntitySearchRequest(searchName, pageCount, pageNumber, pageCookie);

bool hasMoreRecords = true;

while (hasMoreRecords)
{
   entityService.GetEntitySearchResults(entitySearchRequest, (entitySearchResponse) =>
   {
      foreach (Entity e in entitySearchResponse.Entities)
      {
         Console.WriteLine("Entity with id:\"{0}\" retrieved", e.Id);
      }
      if (entitySearchResponse.HasMoreRecords)
      {
         pageNumber++;
         pageCookie = entitySearchResponse.PageCookie;
         entitySearchRequest = new EntitySearchRequest(searchName, pageCount, pageNumber, pageCookie);
      }
      else
      {
         hasMoreRecords = false;
      }
   });
}

Se også

Søge efter data ved hjælp af objektsøgninger i Unified Service Desk
DoSearch

Unified Service Desk 2.0

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret