使用設定檔設定內容 (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 將據以調整其具現化行為。
Static – 一律傳回相同的靜態執行個體。
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. 著作權所有,並保留一切權利。 著作權