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