Adgang til objektrelationer (Dynamics CRM 2015)
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
Udviklerudvidelser til Microsoft Dynamics 365 indeholder også hjælpemetoder til hentning af relaterede objekter. Standardfunktionsmåden for OrganizationServiceContext kræver, at objektrelationsmedlemmer udtrykkeligt indlæses, før der kan opnås adgang til de relaterede objekter, som vist i dette eksempel.
var connection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso; ProxyTypesAssembly=Xrm;");
using (var service = new OrganizationService(connection))
using (var context = new OrganizationServiceContext(service))
{
var contact = context.CreateQuery<Contact>().First(c => c.FirstName == "Bob");
var currencyEmpty = contact.GetRelatedEntity<Entity>("transactioncurrency_contact");
var currencyEmptyStatic = contact.transactioncurrency_contact;
// currency is always null until after calling LoadProperty
Console.WriteLine(currencyEmpty == null);
Console.WriteLine(currencyEmptyStatic == null);
context.LoadProperty(contact, "transactioncurrency_contact");
// read related entity dynamically
var currency = contact.GetRelatedEntity<Entity>("transactioncurrency_contact");
Console.WriteLine(currency.GetAttributeValue<string>("currencyname"));
// read related entity statically
var currencyStatic = contact.transactioncurrency_contact;
Console.WriteLine(currencyStatic.CurrencyName);
}
For dem, der foretrækker at arbejde med statisk skrevne medlemmer i stedet for strengbaserede relations- og attributnavne, findes der et sæt af hjælpemetoder, der tager relationsargumenter som statiske udtryk. Udtrykket har form af et lambda-udtryk med en enkelt objektparameter. Hjælperoverloads findes for alle OrganizationServiceContext relationsmetoder, herunder følgende:
LoadProperty
GetRelatedEntity
GetRelatedEntities
AttachLink
DetachLink
AddLink
DeleteLink
AddRelatedObject
Brug af hjælpermetoden LoadProperty er vist i følgende eksempel.
using Microsoft.Xrm.Client;
using (var service = new OrganizationService(connection))
using (var context = new OrganizationServiceContext(service))
{
var contact = context.CreateQuery<Contact>().First(c => c.FirstName == "Bob");
context.LoadProperty(contact, c => c.transactioncurrency_contact);
var currency = contact.transactioncurrency_contact;
Console.WriteLine(currency.CurrencyName);
}
Et andet sæt af hjælpere kalder implicit metoden LoadProperty og tager en OrganizationServiceContext-reference som den første parameter. Dette gælder for metoderne GetRelatedEntity og GetRelatedEntities som vist her.
using (var service = new OrganizationService(connection))
using (var context = new OrganizationServiceContext(service))
{
// use helper method that calls LoadProperty implicitly
var contact = context.CreateQuery<Contact>().First(c => c.FirstName == "Bob");
var currency = contact.GetRelatedEntity(context, "transactioncurrency_contact");
Console.WriteLine(currency.GetAttributeValue<string>("currencyname"));
}
using (var service = new OrganizationService(connection))
using (var context = new OrganizationServiceContext(service))
{
// use helper method that calls LoadProperty implicitly and maintains static typing
var contact = context.CreateQuery<Contact>().First(c => c.FirstName == "Bob");
var currency = contact.GetRelatedEntity(context, c => c.transactioncurrency_contact);
Console.WriteLine(currency.CurrencyName);
}
Når du bruger CrmOrganizationServiceContext eller den oprettede XrmServiceContext, du har den mest koncise kode til at få adgang til relationer. Denne kontekst tillader automatisk doven indlæsning af relaterede objekter gennem sporing af kontekstreferencen internt og implicit kald af LoadProperty som vist her.
using (var service = new OrganizationService(connection))
using (var context = new CrmOrganizationServiceContext(service))
{
// this context manages the context reference internally
var contact = context.CreateQuery<Contact>().First(c => c.FirstName == "Bob");
var currency = contact.transactioncurrency_contact;
Console.WriteLine(currency.CurrencyName);
}
Se også
Kontekstobjektmodel for udviklerudvidelser (Dynamics CRM 2015)
Konfigurere konteksten med konfigurationsfilen (Dynamics CRM 2015)
Knytte objekter til konteksten (Dynamics CRM 2015)
Forbedringer af kontekst
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret