Opérations de classe d’entité utilisant le SDK pour .NET
Lorsque vous travaillez avec les données Microsoft Dataverse à l’aide du SDK pour .NET, vous allez utiliser la classe Entity avec le style de liaison anticipée ou avec les classes d’entité générées à l’aide du style de liaison anticipée. Les classes d’entité générées proviennent de la classe Entity. Aussi comprendre la classe Entity est important pour chaque style.
Cette rubrique décrit certaines des propriétés et méthodes de la classe Entity utilisées le plus fréquemment.
Entity.LogicalName
Lorsque vous instanciez une nouvelle instance de classe Entity utilisant le style à liaison tardive, vous devez fournir une valeur de chaîne valide pour spécifier de quel type d’entité il s’agit. Le LogicalName
est défini dans les métadonnées de l’entité (définition de la table).
Lors de l’utilisation du style de liaison anticipée, cette valeur est définie par le constructeur de la classe générée. Par exemple : var account = new Entity("account");
Dans votre code, si vous souhaitez récupérer ultérieurement la valeur de chaîne qui décrit le type d’entité, vous pouvez utiliser la propriété LogicalName. Cela est utile pour les nombreux API qui exigent un nom logique d’entité comme paramètre.
Entity.Id
Lorsque vous instanciez la classe Entity
, que ce soit en utilisant le style à liaison tardive ou à liaison anticipée, elle n’a pas d’identifiant unique défini. Si vous créez une entité, vous ne devez pas la définir, mais la laisser être définie par le système lors de sa création (son enregistrement).
Si vous récupérez une entité, elle inclut la valeur d’attribut de clé primaire, que vous l’ayez demandée ou non. Le nom d’attribut de la clé primaire est différent de chaque type d’entité. En général, le nom de l’attribut de clé primaire est l’entité logicalname
+ id
. Pour un compte c’est accountid
et pour un contact c’est contactid
.
Même si vous pouvez obtenir ou définir la valeur de clé primaire à l’aide de l’attribut de clé primaire, vous pouvez également utiliser la propriété Id pour accéder à la valeur sans avoir à vous rappeler du nom de l’attribut de clé primaire.
Accès à liaison anticipée aux colonnes de table
Si vous utilisez le style de liaison anticipée par rapport aux classes générées, vous trouvez les propriétés saisies pour chaque attribut dans la classe. Les propriétés pour les attributs utilisent la méthode AttributeMetadata.SchemaName et elles sont accessibles directement sur l’instance de classe Entity
.
Par exemple :
//Using the early-bound Account entity class
var account = new Account();
// set attribute values
// string primary name
account.Name = "Contoso";
// Boolean (Two option)
account.CreditOnHold = false;
// DateTime
account.LastOnHoldTime = new DateTime(2017, 1, 1);
// Double
account.Address1_Latitude = 47.642311;
account.Address1_Longitude = -122.136841;
// Int
account.NumberOfEmployees = 500;
// Money
account.Revenue = new Money(new decimal(5000000.00));
// Picklist (Option set)
account.AccountCategoryCode = new OptionSetValue(1); //Preferred customer
Accès à liaison tardive aux colonnes de table
Les données contenues au sein d’une entité figurent dans la propriété Entity.Attributes . Cette propriété est une AttributeCollection qui offre un ensemble de méthodes pour ajouter de nouveaux attributs, vérifier si un attribut existe ou supprimer des attributs.
Découvrir les noms de colonnes et les types de données
Dans le style de liaison tardive, vous devez connaître la méthode AttributeMetadata.LogicalName pour l’attribut et le type de données. Le LogicalName
est la version minuscule de SchemaName
. Vous pouvez découvrir le LogicalName
et saisir des attributs de plusieurs façons :
- Visualiser la définition de la colonne (attribut) dans les outils de personnalisation d’application web
- Pour les tables système, vous pouvez consulter la Référence de table/entité
- Utilisez un outil pour parcourir les définitions de table, tel que le navigateur de métadonnées décrit dans Parcourir les métadonnées de votre environnement
- Afficher la liste des classes dérivées sur la page de référence AttributeMetadata
Les types d’attribut peuvent être les suivants. Cette liste n’est pas exhaustive.
Type | Description |
---|---|
EntityReference | Un attribut de recherche. Une liaison vers un autre enregistrement d’entité. |
BooleanManagedProperty | Utilisé uniquement pour les entités qui peuvent être des composants de solution, comme WebResource. Informations complémentaires : Utiliser des propriétés gérées |
Money | Un attribut Devise. |
OptionSetValue | Un attribut Groupe d’options. Les attributs État et Statut utilisent également ce type. |
Boolean | Un attribut à deux options. |
Byte[] | Un attribut d’image. Chaque entité peut comporter une image et l’attribut est intitulé entityimage . Une URL pour télécharger l’image peut être récupérée dans un attribut complémentaire intitulé entityimage_url . Pour plus d’informations : Attributs d’image |
DateTime | Un attribut Date et heure utilise généralement une valeur UTC. Pour plus d’informations : Comportement et format de l’attribut de date et d’heure |
Decimal | Un attribut Nombre décimal. |
Double | Un attribut Nombre à virgule flottante. |
Guid | Utilisé généralement en tant qu’identifiant unique pour l’entité. |
Int32 | Un attribut Nombre entier. |
String | Les attributs Plusieurs lignes de texte et Une seule ligne de texte utilisent ce type. Un autre type moins courant qui utilise une chaîne est les colonnes EntityName , qui stockent une valeur de chaîne représentant le nom logique d’une table. |
Notes
Les colonnes de fichier ne sont pas disponibles directement à partir de l’entité. Vous devez utiliser une série de requêtes pour charger ou télécharger des données à partir de colonnes de fichiers. Plus d’informations : Utiliser les données de colonne de fichier.
Trois méthodes différentes existent pour interagir avec les attributs d’entité en utilisant le style de liaison tardive :
- Utiliser l’indexeur sur la classe
Entity
- Utiliser l’indexeur sur la collection
Attributes
- Utilisez les méthodes
Entity
fournies
Utiliser l’indexeur sur la classe Entity
Dans la plupart des cas avec le style de liaison tardive, vous pouvez interagir avec la collection à l’aide de l’indexeur pour obtenir ou définir la valeur d’un attribut à l’aide du LogicalName
de l’attribut. Par exemple, pour définir l’attribut de nom d’un compte :
//Use Entity class with entity logical name
var account = new Entity("account");
// set attribute values
// string primary name
account["name"] = "Contoso";
// Boolean (Two option)
account["creditonhold"] = false;
// DateTime
account["lastonholdtime"] = new DateTime(2017, 1, 1);
// Double
account["address1_latitude"] = 47.642311;
account["address1_longitude"] = -122.136841;
// Int
account["numberofemployees"] = 500;
// Money
account["revenue"] = new Money(new decimal(5000000.00));
// Picklist (Option set)
account["accountcategorycode"] = new OptionSetValue(1); //Preferred customer
Utiliser l’indexeur sur la collection Attributs
Comme vous le feriez sur l’entité, vous pouvez également accéder à une valeur à l’aide de l’indexeur sur la collection Attributs.
string accountName = account.Attributes["name"];
Utiliser les méthodes Entity
Vous pouvez également utiliser les méthodes Entity pour obtenir et définir les valeurs d’attribut.
Méthode | Description |
---|---|
GetAttributeValue<T>(String) | Utilisez celle-ci pour renvoyer une valeur d’attribut saisie |
SetAttributeValue(String, Object) | Utilisez celle-ci pour définir une valeur d’attribut saisie |
Par exemple :
account.SetAttributeValue("name", "Account Name");
var accountName = account.GetAttributeValue<string>("name");
Entity.FormattedValues
Une valeur d’attribut d’entité qui peut être affichée dans l’interface utilisateur et n’est pas une chaîne a une valeur de chaîne formatée qui peut être utilisée pour afficher la valeur dans l’interface utilisateur. Par exemple :
- Les valeurs monétaires ont une valeur de chaîne avec la devise et le formatage de précision appropriés.
- Les valeurs de date ont un jeu de mise en forme dépendant de la manière dont le système est configuré.
- Les valeurs OptionSet (choix) afficheront l’étiquette localisée qui représente la valeur entière
Notes
Les valeurs formatées s’appliquent uniquement aux entités qui ont été récupérées. Une fois que vous définissez la valeur, une nouvelle valeur formatée n’est pas calculée tant que vous n’avez pas enregistré l’entité et récupéré cette dernière à nouveau. La valeur formatée est générée sur le serveur.
Vous pouvez accéder aux valeurs mises en forme à l’aide de la collection FormattedValues utilisant un indexeur ou avec la méthode GetFormattedAttributeValue(String) de l’entité.
Par exemple, chacune d’elles récupère la même valeur mise en forme :
var formattedRevenueString1 = account.FormattedValues["revenue"];
var formattedRevenueString2 = account.GetFormattedAttributeValue("revenue");
Pour plus d’informations : Accéder aux valeurs formatées
Entity.RelatedEntities
Lorsque vous créez un enregistrement d’entité (ligne de table), vous pouvez également définir un ensemble d’enregistrements d’entité associés à créer dans la même opération. Plus d’informations : Créer des lignes de tables associées en une seule opération
Lorsque vous récupérez un enregistrement d’entité à l’aide de RetrieveRequest, vous pouvez définir RelatedEntitiesQuery avec une requête pour inclure les enregistrements d’entités associés dans les résultats. Pour plus d’informations : Extraire avec des lignes associées.
Si vous incluez des enregistrements d’entité associés dans les résultats, vous pouvez également mettre à jour les valeurs de ces enregistrements liés et les inclure lorsque vous mettez à jour l’enregistrement d’entité. Pour plus d’informations : Mettre à jour des lignes de tables associées en une seule opération
Convertir en une EntityReference
De nombreuses propriétés de messages nécessitent uniquement une EntityReference. Utilisez la méthode Entity.ToEntityReference() pour convertir un enregistrement d’entité en référence d’entité.
Convertir en une classe Entity
Si vous utilisez le style de liaison anticipée, vous devez convertir l’instance Entity en le type de classe d’entité générée que vous utilisez. Cela peut être généralement effectué avec un cast, mais vous pouvez également utiliser la méthode Entity.ToEntity<T>() .
Account account1 = (Account)retrievedEntity;
Account account2 = retrievedEntity.ToEntity<Account>();
Notes
Cette méthode ne peut pas être utilisée pour convertir une instance de classe Entity
générée en une autre classe générée ou en Entity. Elle peut être utilisée uniquement pour convertir une instance Entity vers une des classes générées qui en proviennent. Si l’instance Entity n’est réellement pas une instance de la classe générée, ce message génère une erreur.
Étapes suivantes
Ces rubriques vous expliqueront plus en détail comment utiliser les entités Dataverse (lignes de table).
Démarrage rapide : exemple de SDK pour .NET (C#)
Rechercher des données
Créer des lignes de table
Récupérer une ligne de table
Mettre à jour et supprimer une ligne de table
Associer et dissocier des lignes de table
Générer des classes de programmation à liaison anticipée
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é).