- 30.03.2017
- 4 minute de citit
-
-
m
-
v
-
n
-
v
-
m
-
In acest articol
Adnotarile va permit sa modificati numele elementelor din setul de date tastat fara a modifica schema de baza. Modificarea numelor elementelor din schema dvs. de baza ar face ca setul de date tastat sa se refere la obiecte care nu exista in sursa de date, precum si sa piarda o referinta la obiectele care exista in sursa de date.
Utilizand adnotari, puteti personaliza numele obiectelor din setul dvs. de date tastat cu nume mai semnificative, facand codul mai lizibil si setul de date tastat mai usor de utilizat de catre clienti, lasand in acelasi timp schema de baza intacta. De exemplu, urmatorul element de schema pentru tabela Clienti din baza de date Northwind ar avea ca rezultat un nume de obiect DataRow al ClientilorRow si o DataRowCollection numita Clienti .
<xs: element name = “Clienti”> <xs: complexType> <xs: sequence> <xs: element name = “CustomerID” type = “xs: string” minOccurs = “0” /> </ xs: sequence> < / xs: complexType> </ xs: element>
Un nume DataRowCollection al clientilor este semnificativ in codul clientului, dar un nume DataRow al CustomersRow este inselator, deoarece este un singur obiect. De asemenea, in scenariile obisnuite, obiectul ar fi mentionat fara identificatorul randului si, in schimb, ar fi numit simplu obiect client . Solutia este de a adnota schema si sa identifice noi nume pentru DataRow si DataRowCollection obiecte. Urmeaza versiunea adnotata a schemei anterioare.
<xs: element name = “Clienti” codegen: typedName = “Client” codegen: typedPlural = “Clienti”> <xs: complexType> <xs: sequence> <xs: element name = “CustomerID” type = “xs: string” minOccurs = “0” /> </ xs: sequence> </ xs: complexType> </ xs: element>
Specificarea unei valori typedName a Clientului va avea ca rezultat numele unui obiect DataRow al Clientului . Specificarea unei valori typedPlural a Clientilor pastreaza numele DataRowCollection al Clientilor .
Urmatorul tabel prezinta adnotarile disponibile pentru utilizare.
Adnotare Descriere typedName Numele obiectului. typedPlural Numele unei colectii de obiecte. typedParent Numele obiectului atunci cand este mentionat intr-o relatie parinte. typedChildren Numele metodei de returnare a obiectelor dintr-o relatie copil. nullValue Value daca valoarea de baza este DBNull . Consultati tabelul urmator pentru adnotari nullValue . Valoarea implicita este _throw .
Urmatorul tabel prezinta valorile care pot fi specificate pentru adnotarea nullValue .
nullValue Valoare Descriere Valoare de inlocuire Specificati o valoare care trebuie returnata. Valoarea returnata trebuie sa se potriveasca cu tipul elementului. De exemplu, utilizati nullValue = “0” pentru a returna 0 pentru campuri intregi nule. _trage Arunca o exceptie. Aceasta este valoarea implicita. _null Returneaza o referinta nula sau arunca o exceptie daca se intalneste un tip primitiv. _empty Pentru siruri, returneaza String.Empty , altfel returneaza un obiect creat dintr-un constructor gol. Daca se intalneste un tip primitiv, aruncati o exceptie.
viendo como se follan a mi mujer sin bragas en la calle
zofilia porno rspañol
videos de zofilia incestos gays
española follando videos de lucio saints
incestos lesbicos recopilacion pajas
mujer masturbandose venezolanas desnudas
mujeres normales desnudas española viciosa
tetona amateur forzadas a follar
peliculas porno gay españolas jovencitas pilladas masturbandose
sexo maduras españolas madre española follando con su hijo
porno obligado shemalehd
porno maduras en español vidio pirno
super tetudas maduras lesbianas tetonas
mamada a dos bocas abuela enculada
triple anal pareja follando en la playa
xxx gratis en español xxxgay
swingers españoles incestos jovencitas
follando en casa mujeres fornicando
porno amateur hd bbw abuelas
abuelas porno españolas madres que se follan a sus hijos
Urmatorul tabel prezinta valorile implicite pentru obiectele dintr-un set de date tastat si adnotarile disponibile.
Obiect / Metoda / Eveniment Implicit Adnotare DataTable TableNameDataTable tastat Plural DataTable Metode NewTableNameRow
AddTableNameRow
DeleteTableNameRow
typedName DataRowCollection TableName typedPlural DataRow TableNameRow typedName DataColumn DataTable.ColumnNameColumn
DataRow.ColumnName
typedName Property PropertyName typedName Child Accessor GetChildTableNameRows typedChildren Parent Accessor TableNameRow typedParent DataSet Events TableNameRowChangeEvent
TableNameRowChangeEventHandler
typedName
Pentru a utiliza adnotarile DataSet tastate , trebuie sa includeti urmatoarea referinta xmlns in schema limbii de definire a schemei XML (XSD). Pentru a crea un xsd din tabelele bazei de date, consultati WriteXmlSchema sau Lucrul cu seturi de date in Visual Studio.
xmlns: codegen = “urn: schemas-microsoft-com: xml-msprop”
Urmatorul este un exemplu de schema adnotata care expune tabela Clienti din baza de date Northwind cu o relatie cu tabelul Comenzi inclus.
<? xml version = “1.0” encoding = “utf-8”?> <xs: schema id = “CustomerDataSet” xmlns: codegen = “urn: schemas-microsoft-com: xml-msprop” xmlns = “” xmlns: xs = “http://www.w3.org/2001/XMLSchema” xmlns: msdata = “urn: schemas-microsoft-com: xml-msdata”> <xs: element name = “CustomerDataSet” msdata: IsDataSet = “true” > <xs: complexType> <xs: choice maxOccurs = “unbounded”> <xs: element name = “Clienti” codegen: typedName = “Client” codegen: typedPlural = “Clienti”> <xs: complexType> <xs: sequence> <xs: element name = “CustomerID” codegen: typedName = “CustomerID” type = “xs: string” minOccurs = “0” /> <xs: element name = “CompanyName” codegen: typedName = “CompanyName “type =” xs: string “minOccurs =” 0 “/> <xs: element name =” Phone “codegen: typedName =” Phone “codegen: nullValue =” “type =” xs: string “minOccurs =” 0 ” /> </ xs: sequence> </ xs: complexType> </ xs: element> <xs: element name = “Orders” codegen: typedName = “Order” codegen: typedPlural = “Orders”> <xs: complexType> < xs: sequence> <xs: element name = “OrderID” codegen: typedName = “OrderID” type = “xs: int” minOccurs = “0” /> <xs: element name = “CustomerID” codegen: typedName = “CustomerID” codegen: nullValue = “” type = “xs: string” minOccurs = “0” /> <xs: element name = “EmployeeID” codegen: typedName = “EmployeeID” codegen:nullValue = “0” type = “xs: int” minOccurs = “0” /> <xs: element name = “OrderAdapter” codegen: typedName = “OrderAdapter” codegen: nullValue = “1980-01-01T00: 00: 00” type = “xs: dateTime” minOccurs = “0” /> </ xs: sequence> </ xs: complexType> </ xs: element> </ xs: choice> </ xs: complexType> <xs: nume unic = “Constraint1”> <xs: selector xpath = “.// Clienti” /> <xs: field xpath = “CustomerID” /> </ xs: unique> <xs: keyref name = “CustOrders” refer = “Constraint1” codegen : typedParent = “Client” codegen: typedChildren = “GetOrders”> <xs: selector xpath = “.// Orders” /> <xs: field xpath = “CustomerID” /> </ xs: keyref> </ xs: element > </ xs:schema>
Urmatorul exemplu de cod foloseste un set de date puternic tastat creat din schema esantion. Foloseste un SqlDataAdapter pentru a completa tabela Clienti si un alt SqlDataAdapter pentru a popula tabelul Comenzi . DataSet puternic tastat defineste DataRelations .
‘Presupune un obiect valid SqlConnection numit conexiune. Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter (_ “SELECT CustomerID, CompanyName, Phone FROM Customers”, & connection) Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter (_ “SELECT OrderID, CustomerID, EmployeeID, OrderAdapter FROM Orders”, & connection) ‘Populate un set de date puternic tastat. connection.Open () Dim clients as CustomerDataSet = New CustomerDataSet () customerAdapter.Fill (clienti, „Clienti”) orderAdapter.Fill (clienti, „Comenzi”) connection.Close () ‘Adauga un eveniment puternic tastat AddHandler customers.Customers.CustomerChanged, & New CustomerDataSet.CustomerChangeEventHandler (_ AddressOf OnCustomerChanged) ‘Adaugati un DataRow puternic tastat. Atenuati clientul nou ca set de date client. Client = _ customers.Customers.NewCustomer () newCustomer.CustomerID = “NEW01” newCustomer.CompanyName = “Noua mea companie” customers.Customers.AddCustomer (newCustomer) ‘Navigati relatia copil. Dim client as CustomerDataSet.Customer Dim order as CustomerDataSet.Order For Each client In customers.Customers Console.WriteLine (customer.CustomerID) For each order In customer.GetOrders () Console.WriteLine (vbTab & order.OrderID) Sub OnCustomerChanged (_ expeditor ca obiect, e ca CustomerDataSet.CustomerChangeEvent) End Sub // Presupune un obiect SqlConnection valid numit conexiune. SqlDataAdapter customerAdapter = SqlDataAdapter nou (“SELECT CustomerID, CompanyName, Phone FROM Customers”, conexiune); SqlDataAdapter orderAdapter = nou SqlDataAdapter (“SELECT OrderID, CustomerID, Comanda comanda in client.GetOrders ()) Console.WriteLine (“\ t” + order.OrderID); } nul static protejat OnCustomerChanged (expeditor obiect, CustomerDataSet.CustomerChangeEvent e) {}
Vezi si
- DataColumnCollection
- DataSet
- Seturi de date tastate
- DataSets, DataTables si DataViews
- Prezentare generala ADO.NET








