O biblioteca conceputa pentru a integra proiectele Dapper si graphql-dotnet cu usurinta de utilizare in minte si performanta ca preocupare principala.
Dapper.GraphQL combina ideile care ies din cutie cu graphql-dotnet si adauga urmatoarele concepte:
- Constructorii de interogari
- Cartograf de entitati
Constructori de interogari
Generatorii de interogari sunt folositi pentru a construi interogari dinamice pe baza a ceea ce a cerut clientul in interogarea lor GraphQL. De exemplu, avand in vedere aceasta interogare GraphQL:
Un constructor de interogari adecvat va genera o interogare SQL care arata asa:
Folosind acelasi generator de interogari si dat urmatorul GraphQL:
Ar trebui generata o interogare mai complexa, de genul:
Entitati Mappers
Cartografii de entitati sunt folositi pentru maparea entitatilor la Dapper din rezultatele interogarii. Deoarece o singura entitate poate fi compusa din mai multe randuri ale unui rezultat de interogare, un maper de entitati este proiectat sa imbine rapid mai multe randuri de iesire SQL intr-o singura ierarhie de entitati.
Consultati clasa PersonEntityMapper.cs din proiectul de testare pentru un exemplu.
Infiintat
Dapper.GraphQL foloseste containerul DI standard Microsoft, IServiceCollection, pentru a gestiona toate interactiunile Dapper si GraphQL. Daca va dezvoltati in ASP.NET Core, puteti adauga acest lucru la metoda ConfigureServices ():
putasfollando sexo gratis videos
hombres pajeandose comiendo tetas
jovencitasxxx maduras comiendose el coño
cachondas españolas monjas folladoras
jovencitos desnudos enanas tetonas
xxxjovenes sexo videos caseros
xxxabuelas porno hat
cine para adultos gratis padre enseña a follar a su hija
maduras españolas sexo travestis jovencitas
hombres masturbando a mujeres vidio xxxx
videos mamadas orgasmos extremos
se corre en el coño de su madre me corro sin avisar
mamadas españolas trio en la playa
todoporno cincuentona española follando
coñitos heidi porno
chochitos jovenes desvirga a su hermana
pornoxxxxx colegialas anal
folladas extremas trio casero español
incestos madres hijos porno amas de casa
videos xxx gratis español follando despues de la fiesta
PhoneType> () ; options.AddType <PersonQuery> (); // Adaugati optiunile schemei GraphQL.AddSchema <PersonSchema> (); // Adaugati constructori de interogari pentru optiuni dapper.AddQueryBuilder <Companie, CompanyQueryBuilder> (); > (); options.AddQueryBuilder <Person, PersonQueryBuilder> (); options.AddQueryBuilder <Phone, PhoneQueryBuilder> ();});
Intrebari
Cand creati o interogare SQL bazata pe o interogare GraphQL, aveti nevoie de 2 lucruri pentru a construi interogarea in mod corespunzator: Un constructor de interogari si un maper de entitati .
Generator de interogari
Fiecare entitate dintr-un sistem ar trebui sa aiba propriul constructor de interogari, astfel incat orice interogare GraphQL care interactioneaza cu acele entitati poate fi gestionata automat, chiar si atunci cand este cuibarita in alte entitati.
In configuratia de mai sus, generatorul de interogari prin e-mail arata astfel:
Argumente
- Interogarea reprezinta interogarea SQL generata pana acum.
- Contextul este contextul GraphQL – contine interogarea GraphQL si ce date au fost solicitate.
- Aliasul este aliasul SQL al tabelului curent. Deoarece entitatile pot fi utilizate de mai multe ori (mai multe entitati pot avea un e-mail, de exemplu), este important ca pseudonimele noastre sa fie unice.
Metoda Build ()
Sa descompunem ce se intampla in metoda Build ():
- query.Select ($ “{alias} .Id”); – selectati ID-ul entitatii. Aceasta este o buna practica, astfel incat, chiar daca interogarea GraphQL nu a inclus id-ul, il includem intotdeauna.
- query.SplitOn <Email> (“Id”); – spuneti lui Dapper ca ID-ul marcheaza inceputul clasei de e-mail.
- campuri var = context.GetSelectedFields (); – Obtine o lista de campuri care au fost selectate din GraphQL.
- caz “adresa”: interogare. Selectati ($ “{alias} .Adresa”); – Cand adresa este gasita in interogarea GraphQL, adaugati adresa la clauza SQL SELECT.
Inlantuirea constructorului de interogari
Constructorii de interogari sunt intentionati sa se lanteze, deoarece entitatile noastre tind sa aiba o relatie ierarhica. Consultati fisierul PersonQueryBuilder.cs din proiectul de testare pentru un bun exemplu de inlantuire.
Integrare GraphQL
Iata un exemplu de definitie a interogarii in graphql-dotnet:
Proiectul de testare contine un exemplu de gestionare a acestui scenariu. Consultati PersonEntityMapper.cs.
Consultati proiectul Dapper.GraphQL.Test pentru un set complet de exemple, inclusiv modul in care sunt proiectati constructorii de interogari si mapatorii de entitati .
Pentru a rula teste unitare, trebuie sa aveti PostgreSQL care ruleaza local pe computer. Cel mai simplu mod de a realiza acest lucru este sa instalati Docker si sa rulati PostgreSQL din containerul oficial Docker:
Dintr-o linie de comanda, rulati o imagine Postgres de la andocare, dupa cum urmeaza:
Apoi, testele unitare ar trebui sa functioneze conform asteptarilor.
- Paginare fluenta








