Crearea schema XML folosind XSD
XML este strâns integrat în ADO.NET; De fapt, acesta este un format de bază pentru transmiterea de date între obiecte. La clasa DataTable NET rulare poate fi descrisă în fișierul definiția schemei XML (de exemplu, XSD). Mai mult decât atât, puteți defini o clasă DataSet cu mai multe clase de DataTable și un set de relații între tabele, și includ o varietate de alte elemente pentru o descriere completă a datelor.
După determinarea fișier XSD puteți utiliza instrumentul în timpul rulării, care transformă circuitul conform claselor de acces la date, cum ar fi arătat mai devreme pentru a asigura tipurile de clasă DataTable. Să începem cu un simplu fișier XSD (Products.xsd), care descrie aceleași informații ca exemplul AutoLot, care a fost considerat anterior, și apoi extindeți-l prin adăugarea unor funcționalități suplimentare:
Acest fișier este determinată în principal de atributul id stabilit în schema de AutoLot. Definit tip complex numit produs, care conține un număr de elemente - unul pentru fiecare dintre domeniile produselor de masă.
Elementele sunt afișate pe clase de date după cum urmează. schema de AutoLot afișată pe clasa derivată din DataSet. Tipul de produs complex afișat în clasa derivată din DataTable. Fiecare element secundar este afișat pe o clasă care derivă din DataColumn. O colecție de toate coloanele care sunt afișate în clasa derivată din DataRow.
Din fericire, .NET Framework are un instrument care genereaza codul pentru aceste clase, folosind un fișier de intrare XSD. Deoarece numai scopul său este de a efectua diverse acțiuni asupra fișierelor XSD, instrumentul în sine este numit XSD.EXE.
Presupunând că fișierul anterior este salvat ca AutoLotXsd.xsd, acesta poate fi transformat într-un cod rulând următoarea comandă din linia de comandă:
Rezultatul este un fișier AutoLotXsd.cs. Cu utilitate xsd.exe diverse comutatoare pot fi folosite, cu care se schimbă o ieșire generată. Unele dintre cele mai frecvent utilizate switch-uri sunt descrise mai jos:
Acesta vă permite să generați clase care moștenesc din setul de date, DataTable și DataRow.
Acesta vă permite să selectați limba în care va fi generat fișierul de ieșire. În mod implicit, acesta este C #, dar puteți specifica vb pentru a obține fișierul .NET Visual Basic.
Acesta vă permite să specificați spațiul de nume în care codul generat trebuie să fie plasate. În mod implicit, nu există nici un spațiu de nume.
Mai jos este o versiune prescurtată a producției de utilitate XSD la schema AutoLot:
Toți membrii privați și protejați sunt eliminate pentru a se concentreze pe interfața publică. Definiții ProductDataTable ProductRow și arată poziția celor două sub-clase, care vor fi puse în aplicare în continuare. AutoLot () constructor este metoda privata InitClass (). care construiește o instanță a unei clase derivate din DataTable ProductDataTable și adaugă un tabel la DataSet colecție de clasă Tabele.
prin adăugarea de rânduri în tabel este angajată într-una din cele două supraîncărcat (și semnificativ diferite) AddProductRow () metode. Prima suprasarcină ia deja construite DataRow și se întoarce nule. A doua ia un set de valori, câte una pentru fiecare coloană DataTable, construiește o nouă linie, se setează valoarea, adaugă un rând la un obiect DataTable și returnează acest șir apelantului. Și astfel diferite funcții sunt numite la fel!
Ca și membru InitClass () derivat din clasa DataSet, care adaugă o masă din DataSet, InitMember () membru al ProductDataTable adaugă coloane într-un DataTable. Proprietățile fiecărei coloane sunt stabilite în mod corespunzător, apoi se adaugă coloana la coloanele de colectare.
Ultima clasă, pe care le vom discuta - l ProductRow, moștenit de la DataRow. Această clasă este utilizată pentru a oferi acces securizat la toate tipurile de câmpuri de date din tabel. Acesta servește ca înveliș pentru un anumit șir și oferă membrilor de citire (și scriere) fiecărui câmp din tabel.
În plus, pentru fiecare câmp permite valori nule un set de funcții pentru a seta câmpul la null și verificarea valorii terenului pentru egalitate nulă. Exemplul următor prezintă funcția pentru coloana CarID: