Compartilhar via


Configurar o contexto com o arquivo de configuração (Dynamics CRM 2015)

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Ao usar as Extensões de Desenvolvedor para o Microsoft Dynamics CRM 2015, em vez de ajustar de forma programática a composição de dependência, é possível influenciar os tipos de objeto padrão alterando o arquivo de configuração do aplicativo. A configuração mínima fornece apenas a cadeia de conexão e o contexto de dados. Os objetos de dependência padrão são criados subjetivamente, assim como no caso programático.

Neste tópico

Visão geral

Regras de configuração

Especifique o atributo instanceMode

Configuração padrão

Visão geral

A seguir está exibida a parte do arquivo de configuração padrão:

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

O CrmConfigurationManager é usado para surgir a configuração no código real. O método CreateContext verifica se o nome do elemento de configuração do contexto deve ser usado para instanciar o contexto de dados.

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

Transmitir nulo pega o elemento de configuração de contexto padrão, que é o primeiro elemento na coleção. Além disso, é possível fazer substituir com um elemento padrão explícito. O código a seguir obtém os mesmos resultados conforme mostrado no exemplo acima.

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

O elemento de configuração de contexto é responsável pela especificação da cadeia de caracteres de conexão e, por padrão, procurará por um nome da cadeia de caracteres de conexão com o mesmo nome do elemento de configuração de contexto. O exemplo anterior corresponde ao nome "Xrm". O nome da cadeia de caracteres de conexão pode ser especificado explicitamente para realçar e isolar esse relacionamento, conforme ilustrado a seguir.

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

As dependências aninhadas podem especificadas e vinculadas, conforme mostrado nesse exemplo:

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

O exemplo a seguir mostra desabilitar o 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>

Regras de configuração

O seguinte lista as regras para configurar o contexto.

  • Especifique o elemento <context> - Uma classe de tipo padrão não existe para a dependência OrganizationServiceContext, portanto, especificar o elemento <context/> é obrigatório, a menos que você esteja trabalhando apenas com o CrmOrganizationServiceContext dinâmico e sem geração de código.

  • Especificar opcionalmente o nome de dependência - O atributo de nome da dependência padrão (como o o nome="Xrm") é opcional. Quando omitido, o primeiro elemento <add/> no conjunto de configuração é o padrão.

  • Especificar o atributo de vínculo – É comum especificar o atributo de vínculo como serviceName="Xrm", serviceCacheName="Xrm" e objectCacheName="Xrm". Entretanto, quando um atributo de vínculo é omitido, o CrmConfigurationManager tentar vincular à subdependência com o mesmo nome que a dependência principal.

As dependências da configuração podem ser instanciadas com o CrmConfigurationManager junto com o método estático adequado. O objeto resultante pode ser convertido para o tipo ou referenciado como o tipo base sem converter.

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;

Especifique o atributo instanceMode

Se um elemento de configuração especifica um atributo InstanceMode, o CrmConfigurationManager ajustará o comportamento de instanciação adequadamente.

  • Estático – sempre retorna a mesma instância estática.

  • PerName– retorna uma única instância de cada elemento de configuração especificado.

  • PerRequest – retorna a mesma primeira instância no contexto de uma solicitação da Web, por exemplo. uma instância para cada instância de HttpContext.

  • PerInstance – retorna uma nova instância em cada chamada.

Configuração padrão

A configuração completa com valores padrão:

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

Confira Também

Modelo de objeto do contexto das extensões de desenvolvedor (Dynamics CRM 2015)
Relacionamentos de entidades de acesso (Dynamics CRM 2015)
Anexar entidades ao contexto (Dynamics CRM 2015)

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais