Partager via


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.

Nonte

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 utilisez 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 utiliser ce paramètre défini sur true dans le code de production. Pour plus d’informations, voir Ne pas récupérer toutes les colonnes d’une 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 sur une ligne de référence et utiliser la méthode IOrganizationService.Execute .

Cet exemple montre comment utiliser la méthode .

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

Cet exemple montre comment utiliser les 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"]);

Nonte

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

Utilisez RetrieveRequest avec la méthode IOrganizationService.Execute pour des 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 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 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 une clé secondaire, vous pouvez utiliser cette clé secondaire pour définir une EntityReference et transmettre cette valeur en tant que propriété RetrieveRequest.Target.

Par exemple, si vous définissez la colonne accountaccountnumber comme 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"]);

Nonte

Les clés secondaires sont utilisées uniquement pour les scénarios d’intégration de données

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

Si vous récupérez des données de tables élastiques 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 une opération de récupération est la même que celle que vous utiliserez pour y accéder 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