• 27.05.2021
  • 2 minute de citit
    • J

    • p

In acest articol

Nota

Nu sunteti sigur cu privire la entitate vs. tabel? Consultati Dezvoltatori: Intelegeti terminologia in Microsoft Dataverse.

Cand lucrati cu ansamblurile de serviciu de organizare aveti doua stiluri de programare le puteti utiliza: intarziere legat si timpuriu legat .

Diferenta cheie intre legarea timpurie si cea tardiva implica conversia tipului. In timp ce legarea timpurie ofera verificarea in timp de compilare a tuturor tipurilor, astfel incat sa nu apara proiectii implicite, legarea tarzie verifica tipurile numai atunci cand obiectul este creat sau o actiune este efectuata asupra tipului. Clasa Entity necesita specificarea in mod explicit a tipurilor pentru a preveni aruncari implicite.

Legarea tarzie va permite sa lucrati cu tabele personalizate (entitati) sau coloane (atribute) care nu erau disponibile cand a fost compilat codul.

Legat tarziu

Programarea legata tarziu utilizeaza clasa Entity unde trebuie sa va referiti la tabele si coloane (entitati si atribute) folosind valorile lor de proprietate LogicalName:

  • EntityMetadata.LogicalName
  • AttributeMetadata.LogicalName

Relatiile nu au o proprietate LogicalName, deci este utilizata proprietatea RelationshipMetadataBase.SchemaName.

Principalul avantaj pentru programarea legata tarziu este ca nu este nevoie sa generati clasele sau sa includeti fisierul generat in proiectele dvs. Fisierul generat poate fi destul de mare.

Principalele dezavantaje sunt:

  • Nu primiti validarea timpului de compilare pentru numele entitatilor, atributelor si relatiilor.
  • Trebuie sa cunoasteti atributele si relatiile din metadate.

Bacsis

Un instrument pe care il puteti utiliza pentru a gasi cu usurinta aceste informatii este Browserul de metadate. Aceasta este o aplicatie pe care o puteti descarca si instala in organizatia dvs. Mai multe informatii: Rasfoiti metadatele pentru mediul dvs.

Exemplu

Urmatorul exemplu creeaza un cont utilizand stilul legat tarziu.

// Utilizati clasa Entitate specificand numele logic al entitatii var cont = entitate noua („cont”); // seteaza valorile atributului // sir nume principal cont [“nume”] = “Contoso”; // Cont boolean (doua optiuni) [“creditonhold”] = fals; // DateTime account [“lastonholdtime”] = new DateTime (2017, 1, 1); // Cont dublu [“address1_latitude”] = 47.642311; account [“address1_longitude”] = -122.136841; // Int account [“numberofemployees”] = 500; // Cont de bani [“venituri”] = bani noi (zecimal nou (5000000,00)); // Picklist (set de optiuni) cont [“accountcategorycode”] = new OptionSetValue (1); // Client preferat // Creati contul Guid accountid = svc.Create (cont);

Legat timpuriu

Programarea legata timpuriu necesita sa generati mai intai un set de clase bazate pe definitiile tabelului si coloanei (metadate entitate si atribut) pentru un mediu specific folosind instrumentul de generare a codului (CrmSvcUtil.exe). Mai multe informatii: Generati clase pentru programare legata timpuriu utilizand serviciul Organizatie

Dupa generarea claselor legate timpuriu folosind instrumentul de generare a codului, va veti bucura de o experienta mai buna in timp ce scrieti cod, deoarece clasele si proprietatile utilizeaza valorile respective ale proprietatii SchemaName:

  • EntityMetadata.SchemaName
  • AttributeMetadata.SchemaName
  • RelationshipMetadataBase.SchemaName

Pur si simplu instantiati clasa si lasati Visual Studio IntelliSense sa furnizeze numele proprietatilor si relatiilor.

monjas lesvianas lesbianas scat
sexo en la playa nudista porno sub
viejas mexicanas follando hentai audio español
porno casero españa vidiosxxx
le pilla masturbandose xxx españa
parejas pilladas follando porno parejas
porno traducido español xxxabuelas
sol sanchez actriz porno chicas haciendo el amor
maria patiño desnuda orgias xxx
porno español jovencitas tetonas en la playa
corrida boca porno español jovencita
zofilia xxx moras follando
tetas amaters maduras españolas camara oculta
naomi woods sexo romantico
mamas incestuosas coños gordos
torrent porno cine xxx
porno gratis abuelos videos porno gratis caseros
masaje final feliz jovencitas masturbandose
folladoras triple anal
gordas corriendose maduras buenorras

Clasele generate pentru programarea legata timpuriu pot include, de asemenea, definitii pentru orice actiuni personalizate definite pentru mediu. Acest lucru va va oferi o pereche de clase de solicitare si raspuns pentru a le utiliza cu aceste actiuni personalizate. Mai multe informatii: Actiuni personalizate

Exista, de asemenea, o optiune de extindere a instrumentului de generare a codului pentru a modifica iesirea. O extensie creeaza enumerari pentru fiecare set de optiuni (optiuni) valoare a optiunii. Aceasta ofera o experienta mai buna, deoarece nu trebuie sa cautati valoarea intreaga pentru fiecare alegere. Mai multe informatii: creati extensii pentru instrumentul de generare a codului

Clasele sunt generate folosind definitiile tabelelor dintr-o instanta de mediu specifica si fiecare instanta poate avea tabele si coloane diferite in care acestea se pot schimba in timp. Poate fi necesar sa scrieti cod pentru a functiona pentru tabele care nu sunt prezente atunci cand generati clasele puternic tastate.

Important

Daca utilizati OrganizationServiceProxy pentru a furniza metodele IOrganizationService pe care le veti utiliza, trebuie sa apelati metoda OrganizationServiceProxy.EnableProxyTypes () pentru a activa tipurile de legaturi timpurii.

Exemplu

Urmatorul exemplu creeaza un cont folosind stilul legat timpuriu.

var cont = Cont nou (); // seteaza valorile atributului // sir nume principal account.Name = “Contoso”; // Cont boolean (Doua optiuni) .CreditOnHold = false; // DateTime account.LastOnHoldTime = new DateTime (2017, 1, 1); // Cont dublu.Adresa1_Latitudine = 47.642311; account.Address1_Longitude = -122.136841; // Int account.NumberOfEmployees = 500; // Cont de bani. Venit = bani noi (zecimal nou (5000000,00)); // Picklist (set de optiuni) cont.AccountCategoryCode = new OptionSetValue (1); // Client preferat // Creati contul Guid accountid = svc.Create (cont);

Alegeti ce stil

Ce stil de programare alegeti sa utilizati depinde de dvs. Tabelul urmator ofera avantaje si dezavantaje pentru fiecare.

Legat timpuriu Legat tarziu Puteti verifica numele entitatilor, atributelor si relatiilor la momentul compilarii Nici o verificare a timpului de compilare a entitatii, atributelor si numelor relatiei Trebuie sa generati clase de entitati Nu trebuie sa generati clase de entitati Suport mai bun IntelliSense Mai putin IntelliSense suport Mai putin, mai lizibil cod Mai mult, mai putin lizibil Cod Foarte putin mai performant Foarte putin mai performant

Se amesteca timpuriu si tarziu legat

Deoarece toate clasele generate mostenesc din clasa Entity utilizata cu programarea legata tarziu, puteti lucra cu entitati, atribute si relatii nedefinite in cadrul claselor.

Exemple

Urmatorul exemplu arata o modalitate de a amesteca metodele de legare timpurie si tardiva folosind OrganizationServiceContext.

// Creati un obiect context de serviciu organizational AWCServiceContext context = new AWCServiceContext (_serviceProxy); // Instantati un obiect de cont utilizand clasa Entity. Entitate testaccount = entitate noua („cont”); // Setati mai multe atribute. Pentru cont, este necesar doar numele. testaccount [“name”] = “A patra cafea”; testaccount [“emailaddress1”] = “[email protected]”; // Salvati entitatea utilizand obiectul context al serviciului organizational. context.AddToAccountSet (testaccount); context.SaveChanges ();

Daca un atribut personalizat nu a fost inclus in clasele generate, il puteti utiliza in continuare.

var cont = Cont nou (); // seteaza valorile atributului // sir nume principal account.Name = “Contoso”; // Un atribut boolean personalizat care nu este inclus in clasele generate. account [“sample_customboolean”] = false; // Creati contul Guid accountid = svc.Create (cont);

Atribuiti o instanta legata timpuriu unei instante legate tarziu

Urmatorul exemplu arata cum sa atribuiti o instanta legata timpuriu unei instante legate tarziu.

Incident de entitate = ((Entitate) context.InputParameters [ParameterName.Target]). ToEntity <Incident> (); Task relatedEntity = new Task () {Id = this.TaskId}; incident.RelatedEntities [new Relationship (“Incident_Tasks”)] = new EntityCollection (new Entity [] {relatedEntity.ToEntity <Entity> ()});

Vezi si

Operatiunile entitatii care utilizeaza serviciul de Organizare a

crea randuri de masa utilizand Serviciul Organizare

Preluati un rand de tabel folosind serviciul de Organizare

date de interogare folosind serviciul Organizatiei

Update si randurile din tabel sterge folosind serviciul de Organizare

asociat si randurile din tabel disocia folosind serviciul de Organizatie

IOrganizationService Interface

Utilizarea OrganizationServiceContext