Récupérer une ligne de table à l’aide du SDK pour .NET

Vous récupérerez généralement une ligne en fonction des résultats d’une requête et les résultats de la requête doivent inclure un Identificateur unique pour la ligne.

Notes

Dans les exemples suivants, la variable accountid représente l’identificateur Guid pour une ligne de compte.

Vous disposez de quelques options pour définir les données renvoyées lorsque vous récupérez une ligne. Vous utiliserez la classe ColumnSet pour définir les valeurs de colonne (attribut) dont vous avez besoin.

Important

Lors de la récupération de lignes, vous ne devez demander que les valeurs de colonne dont vous avez besoin en définissant les colonnes spécifiques à l’aide du constructeur de classe ColumnSet. Même si le constructeur de classe ColumnSet fournit une surcharge qui accepte un paramètre allColumns booléen, vous ne devez pas l’utiliser dans le code de production. Pour plus d'informations : Ne pas récupérer toutes les colonnes Entité via les API de requête

Si vous devez renvoyer des lignes liées, vous pouvez inclure une requête avec votre demande de récupération pour définir les lignes liées à renvoyer.

Récupération de base

Vous pouvez récupérer des lignes individuelles en utilisant la méthode IOrganizationService.Retrieve ou en définissant la propriété Target de la classe RetrieveRequest à une ligne de référence et utilisez la méthode IOrganizationService.Execute .

Cet exemple présente l’utilisation de la méthode IOrganizationService.Retrieve .

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

Cet exemple présente l’utilisation des classes RetrieveRequest et RetrieveResponse avec la méthode IOrganizationService.Execute .

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"]);

Notes

La plupart du temps, vous devez utiliser la méthode IOrganizationService.Retrieve .

Utilisez RetrieveRequest avec la méthode IOrganizationService.Execute pour les circonstances particulières comme décrit ci-dessous. Pour plus d’informations :

Lorsque vous récupérez une ligne individuelle, vous pouvez également inclure une requête pour inclure des lignes associées en définissant la propriété RelatedEntitiesQuery de la RetrieveRequest.

Vous pouvez définir une requête en utilisant l’une des classes dérivées de QueryBase et l’associer à une relation de ligne de table spécifique. Ajoutez un ensemble de paires de requêtes et de relations à la propriété RelatedEntitiesQuery à l’aide d’une RelationshipQueryCollection.

L’exemple suivant comprend les lignes task et contact liées à la ligne account qui est récupérée.


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"]);

Les résultats de l’exemple pourraient être identiques à ce qui suit :

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

Pour plus d’informations, consultez Interroger les données à l’aide du SDK pour .NET

Récupérer avec une clé secondaire

Si vous avez configuré une table pour utiliser un clé secondaire, vous pouvez utiliser ce clé secondaire pour définir une EntityReference et passez cette valeur comme propriété RetrieveRequest.Target .

Par exemple, si vous définissez la colonne account accountnumber pour être un clé secondaire, vous pouvez récupérer un compte en utilisant la valeur de cette colonne.

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"]);

Si votre clé secondaire est un composé de plusieurs colonnes (attributs), vous définiriez une KeyAttributeCollection. L’exemple suivant est pour un compte qui a un clé secondaire qui inclut les attributs accountnumber et sic.

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"]);

Notes

Les clés secondaires sont généralement utilisées uniquement pour les scénarios d’intégration des données

Récupérer des enregistrements à partir de tables élastiques

Si vous récupérez des données de table élastique stockées dans des partitions, assurez-vous de spécifier la clé de partition lors de la récupération de ces données. Plus d’informations : Récupérer un enregistrement dans une table élastique

Accéder aux valeurs formatées

La méthode pour accéder aux valeurs formatées dans le cadre d’une opération de récupération est identique à celle utilisée lors de leur accès dans les résultats d’une requête. Pour plus d’informations : Accéder aux valeurs formatées

Voir aussi

Créer des lignes de table à l’aide du SDK pour .NET
Mettre à jour et supprimer des lignes de table à l’aide du SDK pour .NET
Associer et dissocier des lignes de tables à l’aide du SDK pour .NET

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).