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