Freigeben über


Entitätssuchdefinition in Ihrem benutzerdefinierten Code wiederverwenden

Die Entitätssuche in Unified Service Desk wird als Dienst für Entwickler zur Verfügung gestellt, so dass diese programmatisch eine vorhandene Definition der Entitätssuche in ihrem angepassten Code verwenden können, um Microsoft Dataverse-Daten zu suchen. Entitätssuchen in Unified Service Desk verwenden FetchXML, um Daten von den Dataverse-Webdiensten abzufragen. Weitere Informationen zu Entitätssuchen wird unter Suche von Daten mithilfe von Entitätssuchen in Unified Service Desk.

Wenn Sie eine Entitätssuche einrichten, können Sie auswählen, ob die gesamten Suchergebnisse zurückgegeben werden oder die FetchXML-Ergebnisse umfangreicher Datasets auf Seiten angezeigt werden, indem Sie ein Auslagerungscookie zur Verbesserung der Leistung verwenden. Weitere Informationen zur Verwendung des Auslagerungscookies mit FetchXML finden Sie unter Auslagern umfangreicher Ergebnissätze mit FetchXML.

Da Sie einen Entitätssuchnamen in Ihrem Code verwenden, um Daten zurückzugeben, und nicht die FetchXML-Definition, wird mit der Aktualisierung der zugrunde liegenden FetchXML-Abfragedefinition der Entitätssuche in Unified Service Desk ohne Änderung des Entitätssuchnamens sichergestellt, dass Sie nicht den benutzerdefinierten Steuerungscode aktualisieren, neu kompilieren und anschließend auf die Clientcomputer verteilen müssen.

Verwenden Sie die neuemEntitySearchRequestNachricht, um eine Anforderung zu erstellen, und übergeben Sie dann die Anforderung als Parameter an den EntitySearchService.EntitySearchResponse}Methode, um die Antwort (EntitySearchResponse) abzurufen.

Erstellen eines EntitySearchRequest-Objekts

Die EntitySearchRequest Nachricht wird überladen, und Sie benötigen die folgenden drei Konstruktoren, um ein Anforderungsobjekt zu erstellen, davon abhängig, wie die Datensätze zurückgegeben werden sollen. Das Erstellen eines Anforderungsobjekts ohne Verwendung eines dieser drei Konstruktoren wird nicht unterstützt. Bevor Sie einen Namen für die Suche nach Entitäten im Anfrageobjekt verwenden, stellen Sie sicher, dass die Suche nach Entitäten bereits in Unified Service Desk auf Ihrer Dataverse-Instanz definiert ist.

  • Erstellen eines Anforderungsobjekts nur mithilfe des Entitätssuchbegriffs. Auf dieser Konstruktor, um alle Datensätze zurückzugeben, die als Ergebnis der Entitätssuche zurückgegeben werden.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);  
    
  • Erstellen eines Anforderungsobjekts mithilfe des Entitätssuchbegriffs und der maximalen Anzahl der zurückzugebenden Datensätze. Auf dieser Konstruktor, um die Anzahl der Datensätze zu beschränken, die als Ergebnis der Entitätssuche zurückgegeben werden.

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

    Tipp

    Geben Sie für den Parameter 0 maxCount an, um alle Datensätze zurückzugeben.

  • Erstellen eines Anforderungsobjekts mithilfe des Entitätssuchbegriffs, des Seitenzählers, der Seitenzahl und dem Auslagerungscookie. Verwenden diesen Konstruktor, um große Datensätze in Seiten für eine schnellere Leistung zurückzugeben.

    Der pageCount Parameter definiert die Anzahl der Datensätze, die pro Seite zurückzukehren. Der Parameter pageNumber definiert die Seitennummer des Ergebnissets, um die Daten zurückzugeben. Wenn Ihre Abfrage beispielsweise 500 Datensätze zurückgibt, können Sie für pageCount50 angeben, um 50 Datensätze auf einer Seite anzuzeigen. Dies bedeutet, dass Sie die 10 Seiten mit Daten erhalten (50 Datensätze * 10 Seiten = 500). Wenn Sie die 100-150 Datensätze zurückgeben möchten, geben Sie den pageNumber-Wert mit 3 an. Sie müssen pageCookie mit empty angeben, um die erste Seite des Ergebnissatzes abzurufen.

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

    Notiz

    Wenn Sie das Anforderungsobjekt mithilfe dieses Konstruktors ausführen, um die Ergebnisse auf den Seiten abzurufen, gibt EntitySearchResponse.HasMoreRecords- Eigenschaft des Warteobjekts gibt an, ob mehr Datensätze vorhanden sind (Wert=1). Auch der Wert der EntitySearchResponse.PageCookie-Eigenschaft wird auf das Auslagerungscookie festgelegt, das von den aktuellen Ergebnisse zurückgegeben wird.

Führen Sie das Anforderungsobjekt aus.

Verwenden Sie die EntitySearchService.EntitySearchResponse}) Methode, um das Anforderungsobjekts wie im vorherigen Abschnitt beschrieben auszuführen. Diese Methode führt das EntitySearchRequest-Objekt aus, und gibt ein EntitySearchResponse-Objekt mit den Entitätssuchergebnissen zurück.

Das folgende Codebeispiel zeigt, wie Sie eine vorhandene Entitätssuche wiederverwenden können, um Ergebnisse auf Seiten abzurufen.

// 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;  
      }  
   });  
}  

Siehe auch

Suchen von Daten mithilfe von Entitätssuchen in Unified Service Desk
DoSearch