Freigeben über


Den Kontext der Konfigurationsdatei konfigurieren (Dynamics CRM 2015)

 

Veröffentlicht: November 2016

Gilt für: Dynamics CRM 2015

Bei der Verwendung von Entwicklererweiterungen für Microsoft Dynamics CRM 2015 anstelle von programmgesteuerter Anpassung der Abhängigkeitszusammensetzung, ist es möglich, die standardmäßigen Objekttypen zu beeinflussen, indem die Anwendungskonfigurationsdatei geändert wird. Die Mindestkonfiguration stellt nur die Verbindungszeichenfolge und den Datenkontext bereit. Die standardmäßigen Abhängigkeitsobjekte werden versteckt erstellt, wie im Fall der programmgesteuerten.

In diesem Thema

Übersicht

Konfigurationsregeln

Geben Sie das instanceMode das Attribut an

Standardkonfiguration

Übersicht

Im Folgenden wird ein Teil der Standardkonfigurationsdatei dargestellt:

<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 wird verwendet, um die Konfiguration in tatsächlichen Code darzustellen. Die CreateContext-Methode ruft den Namen des Kontextkonfigurationselements ab, das verwendet werden sollte, um den Datenkontext zu instanziieren.

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

Das Übergeben von Null ruft das standardmäßige Kontextkonfigurationselement ab, das das erste Element in der Sammlung ist. Außerdem ist es möglich, das mit einem expliziten Standardelement zu überschreiben. Der folgende Code erzielt die gleichen Ergebnisse, wie im vorangehenden Beispiel gezeigt.

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

Das Kontextkonfigurationselement ist für die Angabe der Verbindungszeichenfolge verantwortlich und sucht standardmäßig nach einem Verbindungszeichenfolgennamen mit demselben Namen wie dem Namen des Kontextkonfigurationselements. Im oben aufgeführten Beispiel stimmt der Name "Xrm" überein. Der Verbindungszeichenfolgenname kann explizit angegeben werden, um die Beziehung wie hier beschrieben hervorzuheben und zu isolieren.

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

Die geschachtelten Abhängigkeiten können, wie im vorliegenden Beispiel veranschaulicht, angegeben und verknüpft werden:

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

Im folgenden Beispiel wird gezeigt, wie das Zwischenspeichern deaktiviert wird.

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

Konfigurationsregeln

Im Folgenden werden die Regeln zur Konfiguration des Kontexts aufgeführt.

  • Festlegen des <context>-Elements - Eine Standardtypklasse ist für die OrganizationServiceContext-Abhängigkeit nicht vorhanden, daher ist die Angabe des <context/>-Elements erforderlich, es sei denn, Sie arbeiten nur mit dem dynamischen CrmOrganizationServiceContext und ohne Codegenerierung.

  • Geben Sie gegebenenfalls den Abhängigkeitsnamen an - Das standardmäßige Abhängigkeitsnamensattribut (z. B. name= " Xrm") ist optional. Wird es weggelassen, ist das erste <add/>-Element unter der Konfigurationssammlung das Standardelement.

  • Geben Sie das verknüpfende das Attribut an - Es ist üblich, das verknüpfende Attribut anzugeben, z. B. serviceName="Xrm", serviceCacheName="Xrm" und objectCacheName="Xrm". Wenn allerdings ein verknüpfendes Attribut weggelassen wird, versucht CrmConfigurationManager eine Verknüpfung mit der Subabhängigkeit mit dem gleichen Namen, wie der übergeordneten Abhängigkeit herzustellen.

Alle Abhängigkeiten der Konfiguration können mit CrmConfigurationManager zusammen mit der entsprechenden statischen Methode instanziiert werden. Das resultierende Objekt kann in den bekannten Typ umgewandelt werden oder als Basistyp ohne Umzuwandeln verwiesen werden.

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;

Geben Sie das instanceMode das Attribut an

Wenn ein Konfigurationselement ein InstanceMode-Attribut angibt, passt CrmConfigurationManager das Instanziierungsverhalten entsprechend an.

  • Statisch - gibt immer die gleiche statische Instanz zurück.

  • PerName- gibt eine einzelne Instanz für jedes angegebene Konfigurationselement zurück.

  • PerRequest - gibt dieselbe erste Instanz im Kontext einer Webanfrage zurück, beispielsweise eine Instanz für jede HttpContext-Instanz.

  • PerInstance - gibt bei jedem Aufruf eine neue Instanz zurück.

Standardkonfiguration

Die vollständige Konfiguration mit Standardwerten

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

Siehe auch

Objektmodell für den Kontext von Entwicklererweiterungen (Dynamics CRM 2015)
Zugreifen auf Entitätsbeziehungen (Dynamics CRM 2015)
Anhängen von Entitäten an den Kontext (Dynamics CRM 2015)

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright