La liaison de début preimage dans Microsoft CRM 2011
-
26-10-2019 - |
Question
Les extensions de développement avancé Microsoft CRM me ont obtenu un peu gâté avec leur liaison anticipée pour les appels effectués aux webservices de CRM.
J'écris un plugin en ce moment et j'aimerais accéder aux attributs définis dans la pré-image. Tous les exemples jettent la préimage comme Microsoft.Xrm.Sdk.Entity qui utilise la liaison tardive pour accéder aux attributs de it. Je n'aime hardcoding pour tous les noms d'attributs est les chaînes dans mon plugin et voudrais trouver une méthode qui évite en utilisant la liaison précoce.
Voici un exemple d'un casting
var preMessageImage = (Microsoft.Xrm.Sdk.Entity)context.PreEntityImages["MyPreImage"];
Mais je dois utiliser la liaison tardive pour accéder aux propriétés
var myProperty = preMessageImate.Properties["MyProperty"];
Est-il possible de lancer ce preimage à un objet XRM qui a toutes les propriétés définies en utilisant la liaison au début, donc je n'ai pas hardcode tous les noms de propriété?
La solution
Vous devez d'abord utiliser l'outil crmsvcutil dans le SDK pour générer « précoce » entités liées XRM et inclure ce fichier de code dans votre plugin codebase.
Je suggère en omettant la « DataContextName » en ligne de commande arg donc pas le contexte est généré.
Pour plus d'informations ici vérification sur MSDN: CrmSvcUtil sur MSDN
Ensuite, vous devez utiliser la méthode de la classe ToEntity<T>
entité pour obtenir une entité spécifique fortement typée. Plus d'infos ici: ToEntity sur MSDN