Bruge klassen OrganizationServiceContext
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
I Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015 kan du bruge OrganizationServiceProxy-klassen til at få adgang til webtjenester. Du kan også bruge den OrganizationServiceContext, der er genereret af kodegenereringsværktøjet, til at få adgang til yderligere funktioner. Med OrganizationServiceContext-klassen kan du registrere ændringer, administrere identiteter og relationer og få adgang til Microsoft Dynamics 365-LINQ-udbyderen. Denne klasse indeholder også en OrganizationServiceContext.SaveChanges-metode, som du kan bruge til at sende ændringer til data, der registreres af konteksten. Denne klasse er baseret på det samme koncept som DataServiceContext-klassen i WCF (Windows Communication Foundation) Data Services.
Du kan generere denne klasse ved at angive en værdi for /serviceContextName-parameteren, når du opretter tidligt bundne typer. Værktøjet til kodegenerering bruger dette navn som navnet på den klasse, der genereres. Du kan finde flere oplysninger om, hvordan du bruger kodegenereringsværktøjet, i Opret klasser for tidligt bundne objekter med værktøjet til oprettelse af kode (CrmSvcUtil.exe). Du kan bruge organisationtjenestekonteksten, når du udvikler programmer, plug-ins og arbejdsprocesaktiviteter.
Dette emne indeholder
Sådan bruger du klassen OrganizationServiceContext
Sporing af ændringer med klassen OrganizationServiceContext
Sporing af relaterede objekter med klassen OrganizationServiceContext
Lagring af ændringer med klassen OrganizationServiceContext
Brug af virtuelle metoder, når konteksten er ændret
Sådan bruger du klassen OrganizationServiceContext
Hvis du vil indsætte en forekomst af kontekstklassen, skal du overføre et objekt, der implementerer IOrganizationService-grænsefladen, til klassekonstruktøren. Én mulighed er at overføre en forekomst af klassen OrganizationServiceProxy. Du kan finde flere oplysninger om T:Microsoft.Xrm.Sdk.IorganizationService-grænsefladen i Brug webtjenesten IOrganizationService til at læse og skrive data eller metadata.
Følgende kodeeksempel viser, hvordan du opretter en ny forekomst af kontekstklassen. I dette eksempel fik kontekstklassen navnet AdventureWorksCycleServiceContext ved at angive det ved hjælp af /serviceContextName-parameteren i kodegenereringsværktøjet:
//For early bound types to work correctly, they have to be enabled on the proxy.
_serviceProxy.EnableProxyTypes();
AdventureWorksCycleServiceContext context = new AdventureWorksCycleServiceContext(_serviceProxy);
Når du opretter organisationsservicens kontekstobjekt, kan du begynde at spore oprette-, redigere- eller slette-objekter. Følgende kodeeksempel viser, hvordan du instantierer en ny kontakt og derefter gemmer den på en Microsoft Dynamics 365-server ved hjælp af servicekontekstobjektet.
// Create a new contact record;
AdventureWorksCycleServiceContext context = new AdventureWorksCycleServiceContext (_serviceProxy);
Contact contact = new Contact()
{
FirstName = "Pamela",
LastName = "Brown",
Address1_Line1 = "123 Easy St.",
Address1_City = "Atlanta",
Address1_StateOrProvince = "GA",
Address1_PostalCode = "32254",
Telephone1 = "425-555-5678" };
context.AddObject(contact);
context.SaveChanges();
Der er flere punkter at bemærke i det forrige kodeeksempel. Når der er en forekomst af en ny kontakt, skal du sende kontaktobjektet til OrganizationServiceContext.AddObject-metoden, så konteksten kan begynde sporing af objektet. Det andet punkt at bemærke er, at det nye objekt er gemt på serveren ved hjælp af OrganizationServiceContext.SaveChanges-metoden.
Organisationens servicekontekst skal registrere alle objekter eller relationer, du vil sende til Microsoft Dynamics 365. Eksempelvis kan du hente en post med en LINQ-forespørgsel, så konteksten vil spore dette objekt, eller du kan bruge OrganizationServiceContext.Attach-metoden til at få konteksten til at registrere objektet. Du kan arbejde med data i et klientprogram og oprette nye objekter, oprette relaterede objekter og redigere eksisterende objekter, men du skal kalde SaveChanges-metoden på registrerede objekter for at gemme ændringerne på Microsoft Dynamics 365-serveren.
Sporing af ændringer med klassen OrganizationServiceContext
For at finde ud af, hvordan et objekt spores af konteksten, kan du kontrollere EntityState-egenskaben for objektforekomsten. Du skal bede organisationsservicekonteksten om at spore et objekt fra Microsoft Dynamics 365 ved at kalde forskellige metoder eller ved hjælp af en LINQ-forespørgsel. Alle objekter, der er returneret fra en .NET-sprogintegreret forespørgsel (LINQ)-forespørgsel, spores af servicekonteksten.
Du kan føje objekter til servicekonteksten ved at kalde en af følgende metoder i OrganizationServiceContext.
Metode |
Bruge |
---|---|
Tilføjer et objekt i sættet af objekter, der spores af organisationsservicekonteksten. Status for objektet i konteksten er angivet til Created. Hvis SaveChanges-metoden kaldes, vil denne post blive oprettet eller føjet til serveren. |
|
Tilføjer et objekt i sættet af objekter, der spores af organisationsservicekonteksten. Status for objektet i konteksten er angivet til Unchanged. Hvis SaveChanges-metoden kaldes, bliver dette objekt ikke sendt til serveren, medmindre dets status ændres. |
|
Tilføjer resultatet af en forespørgsel i sættet af objekter, der spores af organisationsservicekonteksten. |
Sporing af relaterede objekter med klassen OrganizationServiceContext
I Dynamics 365 og CRM Online kan du bruge organisationsservicekonteksten til at oprette og opdatere relationer mellem objekter. De navigationsegenskaber, der er genereret af CrmSvcUtil-værktøjet og placeret i tidligt bundet klasser, giver dig adgang til at ændre relaterede objektegenskaber og relationer. Organisationsservicekonteksten skal spore det relaterede objekt, så det relaterede objekt kan blive tilgængeligt for opdatering på serveren.
Brug følgende metoder i OrganizationServiceContext til at arbejde med relaterede objekter og føje objektet til servicekonteksten:
Metode |
Bruge |
---|---|
Tilføjer målet i konteksten. Kaldet Attach-metoden på måobjektet og kalder derefter AddLink-metoden mellem kildeobjektet og målobjektet (relateret). |
|
Tilføjer det relaterede objekt til sporing i konteksten. Status for objektet i konteksten er angivet til Unchanged. |
|
Opretter en relation mellem kilde- og målobjekterne. Tilføjer målet i konteksten. Status for målobjektet i konteksten er angivet til Created. |
|
Indlæser det relaterede objekt for den angivne relation. Giver adgang til relaterede objekter ved hjælp af navigationsegenskaben. Kald AddObject-metoden på det relaterede objekt, når du har fået adgang til objektet ved hjælp af en navigationsegenskab på det overordnede objekt. |
|
Ændrer tilstanden for det angivne objekt i OrganizationServiceContext til ændret. |
|
Ændrer tilstanden for det angivne objekt, der skal slettes, i OrganizationServiceContext. |
Indlæsning af relaterede objekter ved hjælp af navigationsegenskaber
Relaterede objekter for objekter, du har hentet ved hjælp af LINQ, er null, indtil du bruger LoadProperty til at hente dem. Følgende kodeeksempel viser, hvordan du får adgang til opgaveposter, der er knyttet til en bestemt kontaktpersonpost.
Contact pam = context.ContactSet.Where(c => c.FirstName == "Pamela").FirstOrDefault();
if (pam != null)
{
// pam.Contact_Tasks is null until you use LoadProperty
context.LoadProperty(pam, "Contact_Tasks");
Task firstTask = pam.Contact_Tasks.FirstOrDefault();
}
Lagring af ændringer med klassen OrganizationServiceContext
Organisationsservicekonteksten indeholder et diagram over de objekter, den sporer. Den rækkefølge, hvori organisationsservicekonteksten behandler objektændringer og sender dem til serveren, er vigtig. Opdateringer til primært objekt behandles, og derefter behandles relaterede objekter. Hvis der angives en værdi i det primære objekt af det relaterede objekt, bruges denne værdi, når du opdaterer data på serveren.
Hvis der opstår en fejl, når objektoplysninger gemmes, vises en ny undtagelsestype, der indeholder SaveChangesResult, af OrganizationServiceContext.SaveChanges-metoden, uafhængig af værdien af SaveChangesOptions-parameteren, der sendes til metoden.
Brug af virtuelle metoder, når konteksten er ændret
Nogle gange kan det være nødvendigt at udføre handlinger, der er baseret på ændringer i OrganizationServiceContext. For at lette dette leveres virtuelle metoder til at afbryde eller give besked om en handling. For at drage fordel af disse metoder skal du enten aflede fra OrganizationServiceContext eller ændre den genererede organisationsservicekontekst. I følgende tabel vises de virtuelle metoder.
Metode |
Beskrivelse |
---|---|
Kaldes, når et objekt er knyttet til OrganizationServiceContext. |
|
Kaldes, når et link er knyttet til OrganizationServiceContext. |
|
Kaldes, når et objekt frakobles OrganizationServiceContext. |
|
Kaldes, når et link frakobles OrganizationServiceContext. |
|
Kaldes umiddelbart før, der sendes en anmodning til Microsoft Dynamics CRM Server. |
|
Kaldes umiddelbart efter, at der sendes en anmodning til Microsoft Dynamics CRM Server, uanset om der opstod en undtagelse eller ej. |
|
Kaldes før eventuelle handlinger efter et kald til SaveChanges. |
|
Kaldes, når alle handlinger for et kald til SaveChanges er fuldført, eller når der er en fejl. |
Se også
T:Microsoft.Xrm.Sdk.IorganizationService
OrganizationServiceContext
Brug de tidligt bundne objektklasser i kode
Eksempel: Komplekse LINQ-forespørgsler
Opret klasser for tidligt bundne objekter med værktøjet til oprettelse af kode (CrmSvcUtil.exe)
Bruge de tidligt bundne objektklasser til oprettelse, opdatering og sletning
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret