Eseguire query sui set di dati nelle applicazioni .NET Framework
Nota
I set di dati e le classi correlate sono tecnologie .NET Framework legacy dei primi anni '2000 che consentono alle applicazioni di lavorare con i dati in memoria mentre le applicazioni vengono disconnesse dal database. Le tecnologie sono particolarmente utili per le applicazioni che consentono agli utenti di modificare i dati e rendere persistenti le modifiche apportate al database. Anche se i set di dati hanno dimostrato di essere una tecnologia molto efficace, è consigliabile che le nuove applicazioni .NET usino Entity Framework Core. Entity Framework offre un modo più naturale per usare i dati tabulari come modelli a oggetti e ha un'interfaccia di programmazione più semplice.
Per cercare record specifici in un set di dati, usare il FindBy
metodo in DataTable, scrivere un'istruzione foreach personalizzata per eseguire un ciclo sull'insieme Rows della tabella o usare LINQ to DataSet.
Distinzione tra maiuscole e minuscole del set di
All'interno di un set di dati, i nomi di tabella e di colonna non fanno distinzione tra maiuscole e minuscole per impostazione predefinita, ovvero una tabella in un set di dati denominato "Clienti" può anche essere definita "Clienti". Corrisponde alle convenzioni di denominazione in molti database, incluso SQL Server. In SQL Server il comportamento predefinito è che i nomi degli elementi di dati non possono essere distinti solo per caso.
Nota
A differenza dei set di dati, i documenti XML fanno distinzione tra maiuscole e minuscole, pertanto i nomi degli elementi dati definiti negli schemi fanno distinzione tra maiuscole e minuscole. Ad esempio, il protocollo dello schema consente allo schema di definire una tabella denominata e una tabella diversa denominata Customers
customers
. Ciò può comportare conflitti di nomi quando viene usato uno schema che contiene elementi che differiscono solo per maiuscole e minuscole per generare una classe del set di dati.
La distinzione tra maiuscole e minuscole, tuttavia, può essere un fattore nel modo in cui i dati vengono interpretati all'interno del set di dati. Ad esempio, se si filtrano i dati in una tabella del set di dati, i criteri di ricerca potrebbero restituire risultati diversi a seconda che il confronto sia con distinzione tra maiuscole e minuscole. È possibile controllare la distinzione tra maiuscole e minuscole di filtro, ricerca e ordinamento impostando la proprietà del set di CaseSensitive dati. Per impostazione predefinita, tutte le tabelle nel set di dati ereditano il valore di questa proprietà. È possibile eseguire l'override di questa proprietà per ogni singola tabella impostando la proprietà della CaseSensitive tabella.
Individuare una riga specifica in una tabella dati
Per trovare una riga in un set di dati tipizzato con un valore di chiave primaria
Per individuare una riga, chiamare il metodo fortemente tipizzato
FindBy
che usa la chiave primaria della tabella.Nell'esempio seguente la
CustomerID
colonna è la chiave primaria dellaCustomers
tabella. Ciò significa che il metodo generatoFindBy
èFindByCustomerID
. Nell'esempio viene illustrato come assegnare una variabile specifica DataRow usando il metodo generatoFindBy
.
Per trovare una riga in un set di dati non tipizzato con un valore di chiave primaria
Chiamare il Find metodo di una DataRowCollection raccolta, passando la chiave primaria come parametro.
Nell'esempio seguente viene illustrato come dichiarare una nuova riga denominata
foundRow
e assegnargli il valore restituito del Find metodo . Se viene trovata la chiave primaria, il contenuto dell'indice di colonna 1 viene visualizzato in una finestra di messaggio.
Trovare righe per valori di colonna
Per trovare righe in base ai valori in qualsiasi colonna
Le tabelle di dati vengono create con il Select metodo , che restituisce una matrice di DataRows in base all'espressione passata al Select metodo . Per altre informazioni sulla creazione di espressioni valide, vedere la sezione "Sintassi delle espressioni" della pagina relativa alla Expression proprietà .
Nell'esempio seguente viene illustrato come utilizzare il Select metodo di DataTable per individuare righe specifiche.
Accedere ai record correlati
Quando le tabelle in un set di dati sono correlate, un DataRelation oggetto può rendere disponibili i record correlati in un'altra tabella. Ad esempio, è possibile rendere disponibile un set di dati contenente Customers
tabelle e Orders
.
È possibile utilizzare un DataRelation oggetto per individuare i record correlati chiamando il GetChildRows metodo di un DataRow oggetto nella tabella padre. Questo metodo restituisce una matrice di record figlio correlati. In alternativa, è possibile chiamare il GetParentRow metodo di un DataRow oggetto nella tabella figlio. Questo metodo restituisce un singolo DataRow oggetto dalla tabella padre.
Questa pagina fornisce esempi che usano set di dati tipizzato. Per informazioni sull'esplorazione delle relazioni in set di dati non tipizzato, vedere Esplorazione di DataRelations.
Nota
Se si lavora in un'applicazione Windows Form e si usano le funzionalità di data binding per visualizzare i dati, il modulo generato dalla finestra di progettazione potrebbe fornire funzionalità sufficienti per l'applicazione. Per altre informazioni, vedere Associare controlli ai dati in Visual Studio. In particolare, vedere Relazioni nei set di dati.
Gli esempi di codice seguenti illustrano come spostarsi tra relazioni verso l'alto e verso il basso in set di dati tipizzato. Negli esempi di codice vengono usati i metodi typed DataRows (NorthwindDataSet.OrdersRow
) e i metodi FindByPrimaryKey (FindByCustomerID
) generati per individuare una riga desiderata e restituire i record correlati. Gli esempi vengono compilati ed eseguiti correttamente solo se si dispone di:
Istanza di un set di dati denominato
NorthwindDataSet
con unaCustomers
tabella.Tabella
Orders
.Relazione denominata
FK_Orders_Customers
relativa alle due tabelle.
Inoltre, entrambe le tabelle devono essere compilate con i dati per i record da restituire.
Per restituire i record figlio di un record padre selezionato
Chiamare il GetChildRows metodo di una riga di dati specifica
Customers
e restituire una matrice di righe dallaOrders
tabella:
Per restituire il record padre di un record figlio selezionato
Chiamare il GetParentRow metodo di una riga di dati specifica
Orders
e restituire una singola riga dallaCustomers
tabella: