使用配置文件配置上下文 (Dynamics CRM 2015)
发布日期: 2016年11月
适用于: Dynamics CRM 2015
当使用 Microsoft Dynamics CRM 2015 开发人员扩展而不是以编程方式调整依赖关系组合时,可以通过修改应用程序配置文件来影响默认对象类型。 最低配置只提供连接字符串和数据上下文。 在后台创建默认依赖关系对象就像在编程案例中一样。
本主题内容
概述
配置规则
指定 instanceMode 属性
默认配置
概述
以下显示默认配置文件的一部分:
<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 用于将配置显示为实际代码。CreateContext 方法采用应用于实例化数据上下文的上下文配置元素的名称。
var contextName = "Xrm";
using (var context = CrmConfigurationManager.CreateContext(contextName) as XrmServiceContext)
{
}
传递 null 会采用默认上下文配置元素,其是集合中的第一个元素。 此外,可以使用显式默认元素替代此元素。 以下代码获取与前面示例中所示相同的结果。
using (var context = CrmConfigurationManager.CreateContext() as XrmServiceContext)
{
}
上下文配置元素负责指定连接字符串,默认情况下,它会寻找与上下文配置元素名称相同的连接字符串名称。 以上示例在名称 "Xrm" 上匹配。 如下所示,可以显式指定连接字符串名称以突出显示并隔离此关系。
<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>
可以指定嵌套依赖项并将其链接在一起,如此示例所示:
<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>
下面显示如何禁用缓存:
<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>
配置规则
下面列出了用于配置上下文的规则。
指定 <context> 元素 - 默认类型类对于 OrganizationServiceContext 依赖项不存在,因此需要指定 <context/> 元素,除非您只使用动态 CrmOrganizationServiceContext 且不生成代码。
可以选择指定依赖项名称 - 默认依赖项名称属性(如 name="Xrm")是可选的。 省略时,配置集合下的第一个 <add/> 元素是默认值。
指定链接属性 – 通常指定 serviceName="Xrm"、serviceCacheName="Xrm" 和 objectCacheName="Xrm" 等链接属性。 但是,省略链接属性时,CrmConfigurationManager 会尝试链接到与父依赖项同名的子依赖项。
任何来自配置的依赖项都可以使用 CrmConfigurationManager 以及适当的静态方法进行实例化。 所生成的对象可转换为已知类型或作为未转换的基本类型引用。
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;
指定 instanceMode 属性
如果配置元素指定了 InstanceMode 属性,CrmConfigurationManager 将相应地调整其实例化行为。
静态 – 始终返回同一静态实例。
PerName– 为每个指定的配置元素返回单个实例。
PerRequest – 返回 Web 请求上下文中的第一个相同实例, 例如,每个 HttpContext 实例一个实例。
PerInstance – 每次调用返回一个新的实例。
默认配置
具有默认值的完全配置:
<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>
另请参阅
开发人员扩展上下文对象模型 (Dynamics CRM 2015)
访问实体关系 (Dynamics CRM 2015)
将实体附加到上下文 (Dynamics CRM 2015)
© 2017 Microsoft。 保留所有权利。 版权