• 30.03.2017
  • 4 minute de citit

In acest articol

In LINQ to SQL, un model de obiect exprimat in limbajul de programare al dezvoltatorului este mapat la modelul de date al unei baze de date relationale. Operatiunile pe date sunt apoi efectuate conform modelului obiectului.

In acest scenariu, nu emiteti comenzile bazei de date (de exemplu, INSERT) catre baza de date. In schimb, modificati valorile si executati metode in cadrul modelului de obiect. Cand doriti sa interogati baza de date sau sa o trimiteti modificari, LINQ to SQL traduce solicitarile dvs. in comenzile SQL corecte si trimite acele comenzi in baza de date.

Cele mai fundamentale elemente din modelul de obiect LINQ la SQL si relatia lor cu elementele din modelul de date relationale sunt rezumate in tabelul urmator:

Model de obiect LINQ la SQL Model de date relationale Model de clasa de entitate Tabel Membru de clasa Asociatie coloana Relatie cu cheie straina Metoda Procedura sau functie stocata

Nota

Urmatoarele descrieri presupun ca aveti cunostinte de baza despre modelul si regulile de date relationale.

Clase de entitati LINQ catre SQL si tabele de baze de date

In LINQ to SQL, un tabel de baze de date este reprezentat de o clasa de entitate . O clasa de entitate este ca orice alta clasa pe care ati putea-o crea, cu exceptia faptului ca adnotati clasa utilizand informatii speciale care asociaza clasa cu un tabel de baze de date. Faceti aceasta adnotare adaugand un atribut personalizat (TableAttribute) la declaratia de clasa, ca in exemplul urmator:

Exemplu

[Tabel (Nume = “Clienti”)] clasa publica Customerzz {sir public ID client; // … sir public Oras; } <Tabel (Nume: = “Clienti”)> _ Clasa publica Client ID public client ca sir ‘… Oras public ca clasa de sfarsit de sir

Numai instantele de clase declarate ca tabele (adica clase de entitati) pot fi salvate in baza de date.

Pentru mai multe informatii, consultati sectiunea Atribut tabel din maparea bazata pe atribute.

Membrii clasei LINQ catre SQL si coloanele bazei de date

Pe langa asocierea claselor cu tabele, desemnati campuri sau proprietati pentru a reprezenta coloanele bazei de date. In acest scop, LINQ to SQL defineste atributul ColumnAttribute, ca in exemplul urmator:

Exemplu

[Tabel (Nume = “Clienti”)]] clasa publica Client {[Coloana (IsPrimaryKey = adevarat)] sir public ID client; [Coloana] sir public Oras; } <Tabel (Nume: = “Clienti”)> _ _ Clasa publica client <Coloana (IsPrimaryKey: = True)> _ Public client ID ca sir <Coloana ()> _ Oras public ca clasa de sfarsit de sir

Numai campurile si proprietatile mapate la coloane sunt pastrate sau recuperate din baza de date. Cele care nu sunt declarate coloane sunt considerate parti tranzitorii ale logicii aplicatiei dvs.

Atributul ColumnAttribute are o varietate de proprietati pe care le puteti utiliza pentru a personaliza acesti membri care reprezinta coloane (de exemplu, desemnarea unui membru ca reprezentand o coloana cu cheie primara). Pentru mai multe informatii, consultati sectiunea Atribut coloana din Cartografierea bazata pe atribute.

Asociatii LINQ la SQL si relatii cu chei straine de baze de date

In LINQ to SQL, reprezentati asociatii de baze de date (cum ar fi relatiile de cheie externa la cheie primara) prin aplicarea atributului AssociationAttribute. In urmatorul segment de cod, clasa Comanda contine o proprietate Client care are un atribut AssociationAttribute. Aceasta proprietate si atributul sau ofera clasei Comenzii o relatie cu clasa Client.

Urmatorul exemplu de cod arata proprietatea Clientului din clasa Comanda.

Exemplu

[Association (Name = “FK_Orders_Customers”, Storage = “_ Customer”, ThisKey = “CustomerID”, IsForeignKey = true)] Client public Client {get {return this._Customer.Entity; } set {Customer precedentValoare = this._Customer.Entity; if (((previousValue! = valoare) || (this._Customer.HasLoadedOrAssignedValue == false))) {this.SendPropertyChanging (); if ((previousValue! = nul)) {this._Customer.Entity = nul; previousValue.Orders.Remove (this); } this._Customer.Entity = valoare; if ((valoare! = nul)) {value.Orders.Add (this); this._CustomerID = value.CustomerID; } else {this._CustomerID = implicit (sir); } this.SendPropertyChanged („Client”); }}} <Asociere (Nume: = “FK_Orders_Customers”, Stocare: = “_ Client”, ThisKey: = “CustomerID”, IsForeignKey: = true)>

Pentru mai multe informatii, consultati sectiunea Asociatie atribute din cartografierea bazata pe atribute.

Metode LINQ to SQL si proceduri stocate in baze de date

LINQ to SQL accepta procedurile stocate si functiile definite de utilizator. In LINQ la SQL, asociati aceste abstractizari definite de baze de date la obiectele client, astfel incat sa le puteti accesa intr-o maniera puternic tastata din codul clientului. Semnaturile metodei seamana cat mai aproape de semnaturile procedurilor si functiilor definite in baza de date. Puteti utiliza IntelliSense pentru a descoperi aceste metode.

Un set de rezultate care este returnat printr-un apel catre o procedura mapata este o colectie puternic tastata.

LINQ la SQL mapeaza procedurile si functiile stocate la metode utilizand atributele FunctionAttribute si ParameterAttribute. Metodele care reprezinta proceduri stocate se disting de cele care reprezinta functii definite de utilizator prin proprietatea IsComposable. Daca aceasta proprietate este setata la false (implicit), metoda reprezinta o procedura stocata. Daca este setata la adevarat, metoda reprezinta o functie de baza de date.

Nota

Daca utilizati Visual Studio, puteti utiliza Object Relational Designer pentru a crea metode mapate la proceduri stocate si functii definite de utilizator.

Exemplu

// Acesta este un exemplu de procedura stocata in baza de date Northwind // exemplu. Proprietatea IsComposable implicit este falsa. [Function (Name = “dbo.CustOrderHist”)] public ISingleResult <CustOrderHistResult> CustOrderHist ([Parameter (Name = “CustomerID”, DbType = “NChar (5)”)] ID client sir) {IExecuteResult result = this.ExecuteMethodCall (this , ((MethodInfo) (MethodInfo.GetCurrentMethod ())), client ID); return ((ISingleResult <CustOrderHistResult>) (result.ReturnValue)); } „Acesta este un exemplu de procedura stocata in baza de date esantion Northwind”. Proprietatea IsComposable este implicita falsa. <FunctionAttribute (Name: = “dbo.CustOrderHist”)> _ Function public CustOrderHist (<Parameter (Name: = “CustomerID”, DbType: = “NChar (5)”)>

Pentru mai multe informatii, consultati sectiunile Atribut functie, Atribut procedura stocata si Atribut parametru din Cartografierea bazata pe atribute si Procedurile stocate.

Vezi si

  • Cartografiere bazata pe atribute
  • Informatii generale

valentina nappi xxx rocco siffredi free
mario.salieri rocco siffredi free porn
roberta farnese centoxcento rocco siffredi free videos
italian tube xxx rocco siffredi fuck
alex magni free rocco siffredi fucking
you porn cento x cento rocco siffredi hard academy
barletta porno rocco siffredi hard academy 3
pornostar valeria curtis rocco siffredi hard academy porn
video mario salieri rocco siffredi hard academy streaming
italuan porn rocco siffredi hard academy torrent
porno italia cento per cento rocco siffredi hard academy video
casting alla italiana xxx rocco siffredi hard accademy
video hard rocco e malena rocco siffredi hard video
malena hub rocco siffredi hd porn
addio al celibato hard rocco siffredi incula malena
luna ramondini sex rocco siffredi italian
beautiful teen fuck rocco siffredi italian porn
malena mastromarino porno rocco siffredi kelly stafford
giovani culi rotti rocco siffredi live show
rocco incula malena rocco siffredi malena