使用設定檔設定內容 (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. 著作權所有,並保留一切權利。 著作權