Partager via


Configurer le contexte avec le fichier de configuration (Dynamics CRM 2015)

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

En utilisant les extensions développeur pourMicrosoft Dynamics CRM 2015, plutôt que d’ajuster par programme la composition des dépendances, il est possible d’exercer une influence sur les types d’objet par défaut en modifiant le fichier de configuration de l’application. La configuration minimale fournit juste la chaîne de connexion et le contexte des données. Les objets de dépendance par défaut sont créés « sous le capot » juste comme dans le cas de la programmation.

Contenu de la rubrique

Vue d'ensemble

Règles de configuration

Spécifier l’attribut instanceMode

Configuration par défaut

Vue d'ensemble

Ce qui suit illustre une partie du fichier de configuration par défaut :

<configuration>

 <configSections>
  <section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client"/>
 </configSections>

 <connectionStrings>
  <add name="Xrm" connectionString="Url=http://crm.contoso.com/xrmContoso"/>
 </connectionStrings>

 <microsoft.xrm.client>
  <contexts>
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm"/>
  </contexts>
 </microsoft.xrm.client>

</configuration>

CrmConfigurationManager est utilisé pour faire apparaître la configuration dans le code réel. La méthode CreateContext prend le nom de l’élément de configuration du contexte qui doit être utilisé pour instancier le contexte de données.

var contextName = "Xrm";
using (var context = CrmConfigurationManager.CreateContext(contextName) as XrmServiceContext)
{
}

La transmission de null prend l’élément de configuration du contexte par défaut, qui est le premier élément de la collection. Par ailleurs, il est possible de remplacer celui-ci par un élément par défaut explicite. Le code suivant obtient les mêmes résultats que ceux illustrés dans l’exemple précédent.

using (var context = CrmConfigurationManager.CreateContext() as XrmServiceContext)
{
}

L’élément de configuration de contexte est chargé de spécifier la chaîne de connexion et, par défaut, il recherche un nom de chaîne de connexion portant le même nom que le nom d’élément de configuration de contexte. L’exemple ci-dessus correspond dans le nom « Xrm ». Le nom de la chaîne de connexion peut être spécifié explicitement pour mettre en évidence et isoler cette relation, comme illustré ci-dessous.

<connectionStrings>
 <add name="MyCRM" connectionString="Url=http://crm.contoso.com/xrmContoso"/>
</connectionStrings>

<microsoft.xrm.client>
 <contexts>
  <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" connectionStringName="MyCRM"/>
 </contexts>
</microsoft.xrm.client>

Les dépendances imbriquées peuvent être spécifiées et liées ensemble, comme illustré dans cet exemple :

<microsoft.xrm.client>
 <contexts>
  <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="MyService"/>
 </contexts>
 <services>
  <add name="MyService" type="Microsoft.Xrm.Client.Services.CachedOrganizationService, Microsoft.Xrm.Client" serviceCacheName="MyServiceCache"/>
 </services>
 <serviceCache>
  <add name="MyServiceCache" type="Microsoft.Xrm.Client.Services.OrganizationServiceCache, Microsoft.Xrm.Client" objectCacheName="MyObjectCache"/>
 </serviceCache>
 <objectCache>
  <add name="MyObjectCache" type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
 </objectCache>
</microsoft.xrm.client>

L’exemple suivant montre comment désactiver la mise en cache :

<microsoft.xrm.client>
  <contexts>
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="Xrm"/>
  </contexts>
  <services>
   <add name="Xrm" type="Microsoft.Xrm.Client.Services.OrganizationService, Microsoft.Xrm.Client"/>
  </services>
</microsoft.xrm.client>

Règles de configuration

Ce qui suit répertorie les règles pour configurer le contexte.

  • Spécifier l’élément <context> - Comme une classe de type par défaut n’existe pas pour la dépendance OrganizationServiceContext, la spécification de l’élément <context/> est requise, à moins que vous ne travailliez exclusivement avec le CrmOrganizationServiceContext dynamique et sans génération de code.

  • Spécifier le cas échéant le nom de dépendance - L’attribut du nom de dépendance par défaut (comme name= "Xrm") est facultatif. S’il est omis, le premier élément <add/> sous la collection de configuration est la valeur par défaut.

  • Spécifiez l’attribut de liaison – Il est commun de spécifier l’attribut de liaison comme serviceName="Xrm", serviceCacheName="Xrm" et objectCacheName="Xrm". Cependant, lorsqu’un attribut de liaison est omis, le CrmConfigurationManager essaie de procéder à une liaison avec la sous-dépendance avec le même nom que la dépendance parente.

Les dépendances de la configuration peuvent être instanciées avec le CrmConfigurationManager en même temps que la méthode statique adéquate. L’objet obtenu peut être converti dans le type connu ou être référencé comme type de base sans conversion.

var name = "Xrm";
var connection = new CrmConnection(name);
var objectCache = CrmConfigurationManager.CreateObjectCache(name) as MemoryCache;
var serviceCache = CrmConfigurationManager.CreateServiceCache(name, connection) as OrganizationServiceCache;
var service = CrmConfigurationManager.CreateService(connection, name) as CachedOrganizationService;
var context = CrmConfigurationManager.CreateContext(name) as XrmServiceContext;

Spécifier l’attribut instanceMode

Si un élément de configuration spécifie un attribut InstanceMode, le CrmConfigurationManager ajuste son comportement d’instanciation en conséquence.

  • Statique – renvoie toujours la même instance statique.

  • PerName– retourne une instance unique de chaque élément de configuration spécifié.

  • PerRequest – retourne la même première instance dans le contexte d’une demande Web, par exemple une instance pour chaque instance HttpContext.

  • PerInstance – retourne une nouvelle instance sur chaque appel.

Configuration par défaut

La configuration complète avec des valeurs par défaut :

<configuration>

 <configSections>
  <section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client"/>
 </configSections>

 <connectionStrings>
  <add name="Xrm" connectionString="ServiceUri=...; Domain=...; Username=...; Password=..."/>
 </connectionStrings>

 <microsoft.xrm.client>
  <contexts default="Xrm">
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" connectionStringName="Xrm" serviceName="Xrm"/>
  </contexts>
  <services default="Xrm">
   <add
    name="Xrm"
    type="Microsoft.Xrm.Client.Services.CachedOrganizationService, Microsoft.Xrm.Client"
    serviceCacheName="Xrm"
    instanceMode="PerRequest" [Static | PerName | PerRequest | PerInstance]
   />
  </services>
  <serviceCache default="Xrm">
   <add
    name="Xrm"
    type="Microsoft.Xrm.Client.Services.OrganizationServiceCache, Microsoft.Xrm.Client"
    objectCacheName="Xrm"
    cacheMode="LookupAndInsert" [LookupAndInsert | InsertOnly | Disabled]
    returnMode="Cloned" [Shared | Cloned]
    queryHashingEnabled="false" [false | true]
   />
  </serviceCache>
  <objectCache default="Xrm">
   <add
    name="Xrm"
    type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    instanceMode="PerName" [Static | PerName | PerInstance]
    absoluteExpiration=""
    slidingExpiration="00:00:00" [HH:MM:SS]
    duration="00:00:00" [HH:MM:SS]
    priority="Default" [Default | NotRemovable]
    outputCacheProfileName="Xrm"
   />
  </objectCache>
 </microsoft.xrm.client>

 <system.runtime.caching>
  <memoryCache>
   <namedCaches>
    <add name="Xrm"
     cacheMemoryLimitMegabytes="0"
     physicalMemoryLimitPercentage="0"
     pollingInterval="00:00:00" />
    </namedCaches>
   </memoryCache>
 </system.runtime.caching>

 <system.web>
  <caching>
   <outputCacheSettings>
    <outputCacheProfiles>
     <add name="Xrm" enabled="true" duration="-1"/>
    </outputCacheProfiles>
   </outputCacheSettings>
  </caching>
 </system.web>

</configuration>

Voir aussi

Modèle d’objet de contexte des extensions développeur (Dynamics CRM 2015)
Accéder aux relations d'entité (Dynamics CRM 2015)
Attacher des entités au contexte (Dynamics CRM 2015)

© 2017 Microsoft. Tous droits réservés. Copyright