- 30.03.2017
- 3 minute de citit
-
-
m
-
v
-
n
-
v
-
n
-
In acest articol
Referintele la alte obiecte sau colectii de alte obiecte din definitiile clasei dvs. corespund direct cu relatiile cu chei straine din baza de date. Puteti utiliza aceste relatii atunci cand interogati utilizand notatia punct pentru a accesa proprietatile relatiei si a naviga de la un obiect la altul. Aceste operatiuni de acces se traduc in imbinari mai complexe sau subinterogari corelate in SQL echivalent.
De exemplu, urmatoarea interogare navigheaza de la comenzi la clienti ca o modalitate de a restrange rezultatele la acele comenzi pentru clientii aflati in Londra.
Northwnd db = new Northwnd (@ “northwnd.mdf”); IQueryable <Order> londonOrderQuery = from ord in db.Orders where ord.Customer.City == “London” select ord; Dim db As New Northwnd (“c: \ northwnd.mdf”) Dim londonOrderQuery = _ From ord In db.Orders _ Where ord.Customer.City = “London” _ Select ord
Daca proprietatile relatiei nu ar exista, va trebui sa le scrieti manual ca imbinari , la fel cum ati face intr-o interogare SQL, ca in urmatorul cod:
Northwnd db = new Northwnd (@ “northwnd.mdf”); IQueryable <Order> londonOrderQuery = from cust in db.Customers join ord in db.Orders on cust.CustomerID este egal cu ord.CustomerID unde cust.City == “London” select ord; Dim db As New Northwnd (“c: \ northwnd.mdf”) Dim londOrderQuery = _ From cust In db.Customers _ Join ord In db.Orders On cust.CustomerID Equals ord.CustomerID _ Select ord
Puteti utiliza proprietatea relatiei pentru a defini aceasta relatie speciala o data. Puteti utiliza apoi sintaxa punctelor mai convenabila. Dar proprietatile relatiei exista mai important, deoarece modelele de obiecte specifice domeniului sunt de obicei definite ca ierarhii sau grafice. Obiectele pe care le programati au referinte la alte obiecte. Este doar o coincidenta fericita faptul ca relatiile obiect-obiect corespund relatiilor in stil de cheie straina din bazele de date. Accesul la proprietate ofera apoi o modalitate convenabila de a scrie imbinari.
In ceea ce priveste acest lucru, proprietatile relatiei sunt mai importante din partea rezultatelor unei interogari decat ca parte a interogarii in sine. Dupa ce interogarea a preluat date despre un anumit client, definitia clasei indica faptul ca clientii au comenzi. Cu alte cuvinte, va asteptati ca proprietatea Comenzilor unui anumit client sa fie o colectie care este completata cu toate comenzile de la acel client. Acesta este de fapt contractul pe care l-ati declarat prin definirea claselor in acest mod. Va asteptati sa vedeti comenzile acolo chiar daca interogarea nu a solicitat comenzi. Va asteptati ca modelul dvs. de obiect sa pastreze o iluzie ca este o extensie in memorie a bazei de date cu obiecte conexe disponibile imediat.
Acum ca aveti relatii, puteti scrie interogari referindu-va la proprietatile relatiei definite in clasele dvs. Aceste referinte de relatii corespund unor relatii cu cheie straina din baza de date. Operatiile care utilizeaza aceste relatii se traduc in imbinari mai complexe in SQL echivalent. Atata timp cat ati definit o relatie (folosind atributul AssociationAttribute), nu trebuie sa codificati o asociere explicita in LINQ la SQL.
Pentru a ajuta la mentinerea acestei iluzii, LINQ to SQL implementeaza o tehnica numita incarcare amanata . Pentru mai multe informatii, consultati Incarcare amanata versus incarcare imediata.
Luati in considerare urmatoarea interogare SQL pentru a proiecta o lista de perechi CustomerID-OrderID:
SELECTIONEAZA t0.CustomerID, t1.OrderID FROM Clienti AS t0 INNER JOIN Comenzi AS t1 ON t0.CustomerID = t1.CustomerID WHERE (t0.City = @ p0)
Pentru a obtine aceleasi rezultate utilizand LINQ la SQL, utilizati referinta de proprietate Orders deja existenta in clasa Client. Referinta comenzilor ofera informatiile necesare pentru a executa interogarea si a proiecta perechile CustomerID-OrderID, ca in urmatorul cod:
Northwnd db = new Northwnd (@ “northwnd.mdf”); var idQuery = from cust in db.Customers from ord in cust.Orders where cust.City == “London” select new {cust.CustomerID, ord.OrderID}; Dim db As New Northwnd (“c: \ northwnd.mdf”) Dim idQuery = _ From cust In db.Customers, ord In cust.Orders _ Where cust.City = “London” _ Select cust.CustomerID, ord.OrderID
De asemenea, puteti face invers. Adica, puteti solicita comenzi si puteti utiliza referinta relatiei cu clientii pentru a accesa informatii despre obiectul client asociat. Urmatorul cod proiecteaza aceleasi perechi CustomerID-OrderID ca inainte, dar de data aceasta interogand Comenzi in loc de Clienti.
Northwnd db = new Northwnd (@ “northwnd.mdf”); var idQuery = from ord in db.Orders where ord.Customer.City == “London” select new {ord.Customer.CustomerID, ord.OrderID}; Dim db As New Northwnd (“c: \ northwnd.mdf”) Dim idQuery = _ From ord In db.Orders _ Where ord.Customer.City = “London” _ Select ord.CustomerID, ord.OrderID
Vezi si
- Concepte de interogare
nikita bellucci xxx kelly rocco siffredi
lo spaventapassere streaming kelly rocco siffredi
malena kelly stafford kelly stafford anal
film porno della 100×100 kelly stafford hard
famiglia italiana porn kelly stafford malena
sborratona kelly stafford porn
michel ferrari porno kelly stafford pornostar
roberta gemma porn hd kelly stafford pornstar
free italian xxx kelly stafford rocco
film porno in stream kelly stafford rocco siffredi
xxx streaming tv kelly stafford xxx
public anal porn kiara rizzi
video porno malena kicca martini porn
valentina nappi tits kinky anal
italian hard film kira queen porn
porn segretaria kira queen porno
natasha kiss porn kira queen videos
porn movie in streaming krisztina ventura
cappuccetto rosso film hard la calzolaia piglia cazzi a paia
max felicias la calzolaia piglia cazzi a paia 2








