Kontekstobjektmodel for udviklerudvidelser (Dynamics CRM 2015)
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
Udviklerudvidelser for Microsoft Dynamics CRM 2015 indeholder et sæt af indbyrdes afhængige klasser, der minimerer det arbejde, der kræves for at komme op og køre. Det mest grundlæggende program kræver kun forbindelsesstrengen (eller navnet på en forbindelsesstreng i app.config) og en datakontekst, der er oprettet af CrmSvcUtil.exe som vist i følgende eksempel:
var connection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso");
using (var context = new XrmServiceContext(connection))
{
var accounts = context.AccountSet;
foreach (var account in accounts)
Console.WriteLine(account.Name);
}
Der er indlejrede objekter, der kan håndtere handlinger på nederste niveau. Datakontekst er sammensætningen af alle disse objekter, og derfor er datakontekstens funktionalitet afhængig af objekterne. Disse afhængigheder kan blive eksponeret via brug af bestemte konstruktører. Når den er udvidet, ser standardobjektsammensætningen ud som i følgende eksempel:
var myConnection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso");
var myObjectCache = MemoryCache.Default;
var myServiceCache = new OrganizationServiceCache(myObjectCache, myConnection);
using (var myService = new CachedOrganizationService(myConnection, myServiceCache))
using (var myContext = new XrmServiceContext(myService))
{
}
Afhængigheder
Følgende tabel viser en liste over tilgængelige afhængigheder og deres funktionsmåder.
Brugergrænseflade |
Basisklasse |
Standardtype |
Beskrivelse |
Konfigurationselement |
---|---|---|---|---|
CrmConnection |
CrmConnection |
Forbindelsesoplysningerne i form af en forbindelsesstreng. |
<connectionStrings> |
|
ObjectCache |
MemoryCache |
Den rå datacacheservice, der er uafhængig af de øvrige komponenter af SDK. |
<objectCache> |
|
IOrganizationServiceCache |
OrganizationServiceCache |
OrganizationServiceCache |
En yderligere udvundet datacacheservice, der cachelagrer resultaterne af IOrganizationService-handlinger. Konfigurerer automatisk cacheelementafhængigheder, og kørende opdateringshandlinger ugyldiggør afhængige cacheelementer. |
<serviceCache> |
IOrganizationService |
OrganizationService |
CachedOrganizationService |
En wrapper-klasse omkring IOrganizationService, der administrerer oplysninger om opsætning af en OrganizationServiceProxy eller andre vilkårlige IOrganizationService-objekter. Når det kombineres med et OrganizationServiceCache-objekt, bliver det en cachelagret service. |
<services> |
OrganizationServiceContext |
OData og LINQ-kompatibel datakontekst. Skal specifikt erklæres eller konfigureres, så der findes ingen standardtyper. |
<contexts> |
||
IDiscoveryService |
DiscoveryService |
En wrapper-klasse omkring IDiscoveryService, der administrerer oplysninger om opsætning af en DiscoveryServiceProxy eller andre vilkårlige IDiscoveryService-objekter. Ingen cacheimplementeringer findes for dette og kan ikke konfigureres i app.config. |
Implementering af grænseflader, nedarvning af de tilgængelige basisklasser eller ændring af objektindlejring kan gøres for at ændre den endelige funktionalitet. Én måde at deaktivere cachefunktionen på kan eksempelvis være at udelade cacherelaterede objekter og foretrække de rå basisklasser.
var myConnection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso");
using (var myService = new OrganizationService(myConnection))
using (var myContext = new XrmServiceContext(myService))
{
}
Til at fjerne afhængigheden af kode genereret af CrmSvcUtil.exe til fordel for dynamiske kode skal du bruge CrmOrganizationServiceContext-klassen. Et andet scenarie er at udelade datakonteksten helt og bare kalde IOrganizationService direkte. Dette er også metoden til kald af IDiscoveryService.
var myConnection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso");
using (var myContext = new CrmOrganizationServiceContext(myConnection))
{
}
using (var myService = new OrganizationService(myConnection))
{
var response = myService.Execute(new WhoAmIRequest()));
}
var discoveryConnection = CrmConnection.Parse("Url=http://crm.contoso.com");
using (var myDiscoveryService = new DiscoveryService(discoveryConnection))
{
var response = myDiscoveryService.Execute(new RetrieveOrganizationsRequest()));
}
Forbedringer af kontekst
Den største forskel mellem CrmOrganizationServiceContext, som er den direkte basisklasse for XrmServiceContext, af udviklerudvidelser for Microsoft Dynamics 365 og grundlæggende OrganizationServiceContext i kernen af SDK er implementeringen af grænsefladerne IUpdatable og IExpandProvider. Denne brugerdefinerede implementering tillader, at den genererede datakontekst og de objekter, der er fremstillet af datakonteksten, kan deltage i WCF Data Services-strukturen. For at betjene datakonteksten som et OData-slutpunkt kan du tilføje et nyt WCF Data Service-slutpunkt (.svc) i et eksisterende webprogram.
<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory, System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Service="MySite.MyContext" %>
Her er et eksempel på et serviceslutpunkts bagvedliggende kode (.svc.cs), der kan bruges til udvikling. Angiv XrmServiceContext som generisk typeparameter i DataService<T>-klassen.
using System.Data.Services;
using System.Data.Services.Common;
using System.ServiceModel;
using Xrm;
namespace MySite
{
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyContext : DataService<XrmServiceContext>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// Set rules to indicate which entity sets and service operations are visible, updatable, etc.
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
}
Se også
Udviklerudvidelser til Microsoft Dynamics CRM 2015
Konfigurere konteksten med konfigurationsfilen (Dynamics CRM 2015)
Adgang til objektrelationer (Dynamics CRM 2015)
Knytte objekter til konteksten (Dynamics CRM 2015)
Portalgennemgange til Dynamics CRM 2015
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret