come restituire singola fila utilizzando TableAdapter
-
20-09-2019 - |
Domanda
Ciao Attualmente sto usando TableAdapter che restituisce un DataTable, che va bene da usare quando tabella dei risultati dovrebbe avere più di una riga come:
MyItemsDataTable myItemsDataTable = Adapter.GetAllItems();
, ma se abbiamo bisogno di una sola fila di conseguenza, dire che un elemento, che ha una particolare ID
MyItemsDataSet.MyItemRow itemRow = Adapter.GetItemByID(id)[0];
come posso fare Adattatore per tornare una riga invece di DataTable. Sto usando wizard DataSet Designer e mi dà due opzioni per la messa in SELECT
Use SQL statements --> Select which return rows
(returns one or many rows)
Use SQL statements --> Select which returns a single value rows
(returns a single value)
e l'utilizzo di query simile
SELECT * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
Devo ignorare questo metodo o aggiungerne uno nuovo?
public virtual MyItemsDataSet.MyItemsDataTable GetItemByID(int ITEM_ID)
probabilmente qualcosa come
public virtual MyItemsDataSet.MyItemRow GetItemByID(int ITEM_ID)
Se è così, non posso farlo in file di progettazione generato !! dove posso fare questo?
Grazie
Soluzione
Crea una nuova istruzione Select in Progettazione DataSet. Utilizzare Select which return rows
. Quindi utilizzare la seguente query:
SELECT TOP 1 * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
Salva questo metodo come GetFirstItemByID()
o qualcosa di simile.
Per i Googler là fuori, molti dei database non-MS (ad esempio MySQL.) Utilizzerà la seguente sintassi invece:
SELECT * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
LIMIT 1
Altri suggerimenti
Credo che l'unico modo è quello di accedere alla prima riga della tabella di dati tramite un indice, come si sta facendo con questa query -
MyItemsDataSet.MyItemRow itemRow = Adapter.GetItemByID(id)[0];
Un'altra cosa che si dovrebbe prendere in considerazione di dumping adattatori da tavolo e utilizzando LINQ2SQL invece. LINQ supporta il metodo .first (), che fa esattamente quello che vuoi.