• 30.03.2017
  • 3 minute de citit

In acest articol

Aceasta prezentare generala demonstreaza utilizarea LINQ asociatiilor SQL pentru a reprezenta relatii cu cheie straina in baza de date.

Nota

Computerul dvs. poate afisa nume sau locatii diferite pentru unele dintre elementele interfetei utilizator Visual Studio in urmatoarele instructiuni. Editia Visual Studio pe care o aveti si setarile pe care le utilizati determina aceste elemente. Pentru mai multe informatii, consultati Personalizarea IDE.

Aceasta prezentare a fost scrisa utilizand setarile de dezvoltare Visual C #.

Conditii prealabile

Trebuie sa fi finalizat Ghidul de parcurs: Model simplu de obiecte si interogare (C #). Aceasta solutie se bazeaza pe aceea, inclusiv prezenta fisierului northwnd.mdf in c: \ linqtest5.

Prezentare generala

Aceasta prezentare cuprinde trei sarcini principale:

  • Adaugarea unei clase de entitate pentru a reprezenta tabelul Comenzi in baza de date Northwind esantion.

  • Suplimentarea adnotarilor la clasa Clienti pentru a imbunatati relatia dintre Clienti si clasele Comenzi.

  • Crearea si rularea unei interogari pentru a testa obtinerea informatiilor despre comanda utilizand clasa Client.

Cartografierea relatiilor intre tabele

Dupa definitia clasei Clienti, creati definitia clasei entitatii Comenzii care include urmatorul cod, care indica faptul ca Comanda.Clientul se raporteaza ca o cheie straina la Clientul.ClientID.

Pentru a adauga clasa de entitate Comanda

  • Tastati sau lipiti urmatorul cod dupa clasa Client:

    [Tabel (Nume = “Comenzi”)] public class Order {private int _OrderID = 0; sir privat _CustomerID; private EntityRef <Customer> _Customer; ordine publica () {this._Customer = new EntityRef <Customer> (); } [Coloana (Storage = “_OrderID”, DbType = “Int NOT NULL IDENTITY”, IsPrimaryKey = true, IsDbGenerated = true)] public int OrderID {get {return this._OrderID; } // Nu este necesar sa specificati un setter deoarece IsDBGenerated este // adevarat. } [Coloana (Storage = “_CustomerID”, DbType = “NChar (5)”)] sir public ID client {get {return this._CustomerID; } set {this._CustomerID = value; }} [Association (Storage = “_Customer”, ThisKey = “CustomerID”)] Customer Customer Customer {get {return this._Customer.Entity; } set {this._Customer.Entity = valoare; }}}

Adnotarea clasei de clienti

In acest pas, adnotati clasa Client pentru a indica relatia acesteia cu clasa Comanda. (Aceasta adaugare nu este strict necesara, deoarece definirea relatiei in ambele directii este suficienta pentru a crea legatura. Dar adaugarea acestei adnotari va permite sa navigati cu usurinta in obiecte in ambele directii.)

Pentru a adnota clasa Client

  • Tastati sau lipiti urmatorul cod in clasa Clienti:

    private EntitySet <Order> _Orders; Client public () {this._Orders = new EntitySet <Order> (); } [Association (Storage = “_Orders”, OtherKey = “CustomerID”)] public EntitySet <Order> Comenzi {get {return this._Orders; } set {this._Orders.Assign (valoare); }}

Crearea si executarea unei interogari in relatia client-comanda

Acum puteti accesa obiectele Comanda direct din obiectele Clientului sau in ordinea opusa. Nu aveti nevoie de o asociere explicita intre clienti si comenzi.

Pentru a accesa obiecte Comanda utilizand obiecte Client

  1. Modificati metoda principala tastand sau lipind urmatorul cod in metoda:

    // Interogare pentru clientii care au plasat comenzi. var custQuery = from cust in Clientii unde cust.Orders.Any () selecteaza cust; foreach (var custObj in custQuery) {Console.WriteLine (“ID = {0}, Qty = {1}”, custObj.CustomerID, custObj.Orders.Count); }

  2. Apasati F5 pentru a depana aplicatia.

    Nota

    Puteti elimina codul SQL din fereastra Consolei comentand db.Log = Console.Out ;.

  3. Apasati Enter in fereastra Consolei pentru a opri depanarea.

Crearea unei vizualizari puternice a bazei de date

Este mult mai usor sa incepeti cu o vizualizare puternic tastata a bazei de date. Tastand puternic obiectul DataContext, nu aveti nevoie de apeluri catre GetTable. Puteti utiliza tabele puternic tastate in toate interogarile dvs. atunci cand utilizati obiectul DataContext puternic tastat.

In pasii urmatori, veti crea Clienti ca un tabel puternic tastat care se mapeaza la tabelul Clienti din baza de date.

Pentru a tasta puternic obiectul DataContext

  1. Adaugati urmatorul cod deasupra declaratiei clasei de clienti.

    public class Northwind: DataContext {// Table <T> abstractizeaza detaliile bazei de date pe tabel / tip de date. public Table <Customer> Clienti; tabel public <Comanda> Comenzi; Northwind public (conexiune sir): baza (conexiune) {}}

  2. Modificati metoda principala pentru a utiliza DataContext puternic tastat dupa cum urmeaza:

    // Folositi un sir de conexiune. Northwind db = new Northwind (@ “C: \ linqtest5 \ northwnd.mdf”); // Interogare pentru clienti din Seattle. var custQuery = from cust in db.Customers where cust.City == “Seattle” select cust; foreach (var custObj in custQuery) {Console.WriteLine (“ID = {0}”, custObj.CustomerID); } // Inghetati fereastra consolei. Console.ReadLine ();

  3. Apasati F5 pentru a depana aplicatia.

    Iesirea ferestrei Consolei este:

    ID = WHITC

  4. Apasati Enter in fereastra consolei pentru a opri depanarea.

Pasii urmatori

Urmatoarea solutie (Ghid: Manipularea datelor (C #)) demonstreaza cum se manipuleaza datele. Aceasta actiune nu necesita salvarea celor doua actiuni in aceasta serie pe care le-ati finalizat deja.

Vezi si

  • Invatarea prin ghiduri

male a porno emmanuelle hard
luna e rebecca emmanuelle porn
porno christie dom emmanuelle porno
salieri porno gratis emmanuelle sex
christi dom emmanuelle streaming
italian xxx movies emmanuelle xxx
figone xxx emy spermaparty
malena sex video entoxcento

sissy xxx eva rubino porno
porno valentina nappi e rocco siffredi fai la cosa giusta streaming
mattcore video fake hostel xxx
la centoxcento fake taxi italia
video centopercento fake taxi italian
malena rocco siffredi porn fake taxi italiano
pornostar rebecca volpetti fake taxi italy
porno solo culo fake taxi streaming
video sex malena fake vip porn
rossella visconti porn faketaxi italia
malena rocco video faketaxi streaming