Freigeben über


Abrufen einer Tabellenzeile über die SDK für .NET

Normalerweise rufen Sie eine Zeile basierend auf den Ergebnissen einer Abfrage ab und die Abfrageergebnisse sollten einen eindeutigen Bezeichner für die Zeile enthalten.

Hinweis

In den folgenden Beispielen repräsentiert die Variable accountid den Bezeichner Guid für eine Kontozeile.

Sie haben einige Optionen zum Definieren der Daten, die beim Abrufen einer Zeile zurückgegeben werden. Sie werden die Klasse ColumnSet verwenden, um zu definieren, welche Spaltenwerte (Attribute) Sie benötigen.

Wichtig

Beim Abrufen von Zeilen sollten Sie nur die benötigten Spaltenwerte anfordern, indem Sie die spezifischen Spalten mit dem Klassenkonstruktor ColumnSet angeben. Obwohl ColumnSet-Klassenkonstruktor eine Überladung bietet, die einem Booleschen Parameter allColumns annimmt, sollten Sie dies im Produktionscode nicht verwenden. Weitere Informationen: Rufen Sie nicht alle Spalten einer Entität zur Abfrage von APIs ab

Wenn Sie verwandte Zeilen zurückgeben müssen, können Sie eine Abfrage in Ihre Abrufanforderung einschließen, um zu definieren, welche verwandten Zeilen zurückgegeben werden sollen.

Grundlegende Abfragen

Sie können einzelne Zeilen abrufen, indem Sie entweder die Methode IOrganizationService.Retrieve verwenden oder die Eigenschaft Target der Klasse RetrieveRequest auf eine Referenzzeile festlegen und die IOrganizationService.Execute Methode verwenden.

Dies wird im folgenden Beispiel verdeutlicht IOrganizationServiceRetrieve Methode verwenden.

Entity entity = svc.Retrieve("account", accountid, new ColumnSet("name"));
Console.WriteLine("account name: {0}", entity["name"]);

Dieses Beispiel zeigt Nutzung der Klassen RetrieveRequest und RetrieveResponse mit der IOrganizationService.Execute Methode.

RetrieveRequest request = new RetrieveRequest()
{
  ColumnSet = new ColumnSet("name"),
  Target = new EntityReference("account", accountid)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;
Console.WriteLine("account name: {0}", entity["name"]);

Hinweis

Meistens verwenden Sie die IOrganizationService.Retrieve Methode.

Verwenden Sie die RetrieveRequest mit der IOrganizationService.Execute-Methode. Methode für spezielle Umstände, wie unten beschrieben. Weitere Informationen:

Wenn Sie eine einzelne Zeile abrufen, können Sie auch eine Abfrage einschließen, um verwandte Zeilen einzuschließen, indem Sie die Eigenschaft RelatedEntitiesQuery von RetrieveRequest festlegen.

Sie können eine Abfrage mit einer der Klassen definieren, die von QueryBase abgeleitet sind, und sie einer bestimmten Tabellenzeilenbeziehung zuordnen. Fügen Sie eine Sammlungvon Abfragen und Beziehungen der RelatedEntitiesQuery-Eigenschaft mithilfe einer RelationshipQueryCollection hinzu.

Das folgende Beispiel enthält die Zeilen task und contact, die mit der abgerufenen Zeile account verwandt sind.


var relationshipQueryCollection = new RelationshipQueryCollection();

var relatedTasks = new QueryExpression("task");
relatedTasks.ColumnSet = new ColumnSet("subject", "description");
var taskRelationship = new Relationship("Account_Tasks");
relationshipQueryCollection.Add(taskRelationship, relatedTasks);


var relatedContacts = new QueryExpression("contact");
relatedContacts.ColumnSet = new ColumnSet("fullname", "emailaddress1");
var contactRelationship = new Relationship("account_primary_contact");
relationshipQueryCollection.Add(contactRelationship, relatedContacts);

var request = new RetrieveRequest()
{
  ColumnSet = new ColumnSet(true),
  RelatedEntitiesQuery = relationshipQueryCollection,
  Target = new EntityReference("account", accountid)
};

RetrieveResponse response = (RetrieveResponse)svc.Execute(request);

Entity retrievedAccount = response.Entity;

Console.WriteLine("Account Name: {0}",retrievedAccount["name"]);

var tasks = retrievedAccount.RelatedEntities[new Relationship("Account_Tasks")];

Console.WriteLine("Tasks:");
tasks.Entities.ToList().ForEach(x => {
  Console.WriteLine(" Task Subject: {0}",x["subject"]);
});

Entity primaryContact = retrievedAccount
  .RelatedEntities[new Relationship("account_primary_contact")]
  .Entities.FirstOrDefault();

Console.WriteLine("Primary Contact Fullname: {0}",primaryContact["fullname"]);

Das Ergebnis des Beispiels könnte wie folgt aussehen:

Account Name: City Power & Light (sample)
Tasks:
 Task Subject: Task 1
 Task Subject: Task 2
Primary Contact Fullname: Scott Konersmann (sample)

Weitere Informationen: Daten mithilfe des SDK für .NET abfragen

Abruf mit einem Alternativschlüssel

Wenn Sie eine Tabelle zur Verwendung eines Alternativschlüssel konfiguriert haben, können Sie diesen Alternativschlüssel verwenden, um eine EntityReference zu definieren und diesen Wert als RetrieveRequest.Target übergeben. Eigenschaft verfügbar sind.

Wenn Sie beispielsweise die Spalte account accountnumber als Alternativschlüssel definieren, können Sie ein Konto mit dem Wert dieser Spalte abrufen.

RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", "accountnumber", "0001")
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;

Console.WriteLine(entity["name"]);

Wenn Ihr Alternativschlüssel aus mehreren Spalten (Attributen) besteht, definieren Sie eine KeyAttributeCollection. Das folgende Beispiel gilt für ein Konto mit einem Alternativschlüssel, der die Attribute accountnumber und sic enthält.

var keyCollection = new KeyAttributeCollection();
keyCollection.Add("accountnumber", "0001");
keyCollection.Add("sic", "7372");

RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", keyCollection)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;

Console.WriteLine(entity["name"]);

Hinweis

Alternativschlüssel werden in der Regel nur für Datenenintegrationsszenarien verwendet

Abrufen von Datensätzen aus elastischen Tabellen

Wenn Sie Daten aus elastischen Tabellen abrufen, die in Partitionen gespeichert sind, müssen Sie beim Abrufen dieser Daten den Partitionsschlüssel angeben. Weitere Informationen: Abrufen eines Datensatzes in einer elastischen Tabelle

Zugriff formatierte Werte

Die Methode, um formattierte Werte in einem Abrufensvorgang abzurufen ist gleich, wie wenn Sie auf die Ergebnisse in einer Abfrage zugreifen. Weitere Informationen: Zugriff auf formatierte Werte

Siehe auch

Tabellenzeilen mit dem SDK für .NET erstellen
Aktualisieren und Löschen von Tabellenzeilen über die SDK für .NET
Zuordnen und Aufheben der Zuordnung von Tabellenzeilen über das SDK für .NET

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).