Delen via


De context configureren met het configuratiebestand (Dynamics CRM 2015)

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Bij het gebruik van Developer-uitbreidingen voor Microsoft Dynamics CRM 2015, is het mogelijk om de afhankelijkheidssamenstelling niet programmatisch aan te passen, maar de standaard objecttypen te beïnvloeden door het toepassingsconfiguratiebestand te wijzigen. De minimale configuratie biedt alleen de verbindingstekenreeks en gegevenscontext. De standaardafhankelijkheidsobjecten worden op de achtergrond gemaakt, net als bij de programmatisch aanpak.

In dit onderwerp

Overzicht

Configuratieregels

Het kenmerk instanceMode opgeven

Standaardconfiguratie

Overzicht

Het volgende laat een deel van het standaardconfiguratiebestand zien:

<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>

De CrmConfigurationManager wordt gebruikt om de configuratie weer te geven in werkelijke code. De methode CreateContext krijgt de naam van het element van de contextconfiguratie dat moet worden gebruikt om de gegevenscontext te instantiëren.

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

Bij doorgifte van null wordt het standaardconfiguratie-element genomen, namelijk het eerste element in de verzameling. Bovendien is het mogelijk om met dit te negeren met een expliciet standaardelement. Met de volgende code worden dezelfde resultaten verkregen als in het voorafgaande voorbeeld.

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

Het element van de contextconfiguratie is verantwoordelijk voor het bepalen de verbindingstekenreeks en, standaard, wordt het een verbindingstekenreeksnaam met dezelfde naam als de elementnaam van de contextconfiguratie. Het bovenstaande voorbeeld gebruikt de naam "Xrm". De verbindingstekenreeksnaam kan expliciet worden opgegeven om deze relatie te markeren en isoleren, zoals hier aangegeven.

<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>

De genestelde afhankelijkheden kunnen worden opgegeven en aan elkaar gekoppeld, zoals afgebeeld in dit voorbeeld:

<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>

In het volgende voorbeeld ziet u hoe u caching kunt uitschakelen:

<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>

Configuratieregels

In de volgende worden de regels voor het configureren van de context weergegeven.

  • Geef het element <context> op - Een klasse van het standaardtype bestaat niet voor de afhankelijkheid OrganizationServiceContext, dus moet het element <context/> worden opgegeven, tenzij u alleen met dynamische CrmOrganizationServiceContext en zonder codegeneratie werkt.

  • Geef desgewenst de afhankelijkheidsnaam op - Het kenmerk van de standaardafhankelijkheidsnaam (zoals name="Xrm") is optioneel. Als dit wordt weggelaten, is het eerste element <add/> onder de configuratieverzameling de standaardwaarde.

  • Geef het koppelingskenmerk op Het is gebruikelijk om het koppelingskenmerk op te geven, zoals serviceName="Xrm", serviceCacheName="Xrm" en objectCacheName="Xrm". Wanneer echter een koppelingskenmerk wordt weggelaten, probeert CrmConfigurationManager te koppelen met de subafhankelijkheid met dezelfde naam als de bovenliggende afhankelijkheid.

Alle afhankelijkheden van de configuratie kunnen worden geïnstantieerd met de CrmConfigurationManager samen met de juiste statische methode. Het resulterende object kan worden geconverteerd naar het bekende type of er kan naar worden verwezen als het basistype zonder te converteren.

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;

Het kenmerk instanceMode opgeven

Als een configuratie-element een kenmerk InstanceMode opgeeft, past de CrmConfigurationManager zijn instantiëringsgedrag op passende wijze aan.

  • Static – geeft steeds hetzelfde statische exemplaar als resultaat.

  • PerName- geeft een enkel exemplaar voor elk opgegeven configuratie-element als resultaat.

  • PerRequest – geeft hetzelfde eerste exemplaar in de context van een webverzoek als resultaat, bijvoorbeeld één exemplaar voor elk HttpContext exemplaar.

  • PerInstance – geeft een nieuw exemplaar bij elke aanroep als resultaat.

Standaardconfiguratie

De volledige configuratie met standaardwaarden:

<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>

Zie ook

contextobjectmodel ontwikkelaarsuitbreidingen (Dynamics CRM 2015)
Toegang krijgen tot entiteitsrelaties (Dynamics CRM 2015)
Entiteiten aan de context koppelen (Dynamics CRM 2015)

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht