Condividi tramite


Configurare il contesto con il file di configurazione (Dynamics CRM 2015)

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Quando si utilizzano le estensioni per gli sviluppatori perMicrosoft Dynamics CRM 2015, anziché a livello di programmazione regolando la composizione di dipendenza, è possibile influenzare i tipi di oggetto predefiniti modificando il file di configurazione dell'applicazione. La configurazione minima consente solo la stringa di connessione nel contesto dati. Gli oggetti di dipendenza predefiniti sono creati in roba da smanettoni come nel caso programmatico.

In questo argomento

Informazioni generali

Regole di configurazione

Specificare l'attributo instanceMode

Configurazione predefinita

Informazioni generali

Di seguito viene illustrata parte del file di configurazione predefinito:

<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 è utilizzato per trovare la configurazione nel codice effettivo. Il metodo CreateContext prende il nome dell'elemento di configurazione del contesto che dovrà essere utilizzato per creare un'istanza del contesto dati.

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

Passare nulla accetta l'elemento di configurazione del contesto predefinito che è il primo elemento nella raccolta. Inoltre, è possibile sostituirlo con un elemento predefinito esplicito. Il codice seguente ottiene gli stessi risultati come illustrato nell'esempio precedente.

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

L'elemento di configurazione del contesto è responsabile di specificare la stringa di connessione e, per impostazione predefinita, cerca un nome della stringa di connessione con lo stesso nome dell'elemento di configurazione del contesto. L'esempio precedente corrisponde al nome "Xrm". Il nome della stringa di connessione può essere specificato in modo esplicito per evidenziare e isolare questa relazione, come illustrato di seguito.

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

Le dipendenze nidificate possono essere specificate e collegate, come illustrato in questo esempio:

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

Di seguito viene illustrato come disabilitare la memorizzazione nella 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>

Regole di configurazione

Di seguito sono elencate le regole per la configurazione del contesto.

  • Specificare l'elemento <contesto>: una classe di tipo predefinito non esiste per la dipendenza OrganizationServiceContext pertanto la specificazione dell'elemento <context/> è necessaria, a meno che non si stia lavorando solamente con CrmOrganizationServiceContext dinamico e senza generazione di codice.

  • Facoltativamente specificare il nome di dipendenza: l'attributo nome predefinito di dipendenza (ad esempio, nome= "Xrm") è facoltativo. Quando omesso, il primo elemento <add/> nella raccolta di configurazione è l'impostazione predefinita.

  • Specificare l'attributo di collegamento: è comune specificare l'attributo di collegamento come serviceName="Xrm", serviceCacheName="Xrm" e objectCacheName="Xrm". Tuttavia, quando un attributo di collegamento è omesso, CrmConfigurationManager tenta di accedere alla dipendenza secondaria con lo stesso nome della dipendenza padre.

Tutte le dipendenze di configurazione possono creare un'istanza con CrmConfigurationManager insieme al metodo statico appropriato. Non è possibile eseguire il cast dell'oggetto risultante nel tipo noto oppure farvi riferimento come tipo di base senza eseguire il cast.

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;

Specificare l'attributo instanceMode

Se un elemento di configurazione specifica un attributo InstanceMode, CrmConfigurationManager regolerà il comportamento di creazione istanze di conseguenza.

  • Statico: restituisce sempre la stessa istanza statica.

  • PerName: restituisce una sola istanza per ogni elemento di configurazione specificato.

  • PerRequest: restituisce la stessa prima istanza nel contesto di una richiesta Web, ad esempio un'istanza per ogni istanza HttpContext.

  • PerInstance: restituisce una nuova istanza in ogni chiamata.

Configurazione predefinita

La configurazione completa con i valori predefiniti:

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

Vedere anche

Modello a oggetti del contesto delle estensioni per gli sviluppatori (Dynamics CRM 2015)
Relazioni tra entità di accesso (Dynamics CRM 2015)
Collega entità al contesto (Dynamics CRM 2015)

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright