Oui, un aller-retour par table est le chemin à parcourir. (- Il est certainement possible d'utiliser une requête de jointure pour renseigner un datatable mais VS sera alors réticent à générer une mise à jour etc SQL Cela peut ou non poser problème, selon ce que vous avez l'intention de faire avec l'ensemble de données. si vous avez deux tables dans un ensemble de données, permet de dire que les clients - les commandes, alors vous utilisez généralement deux requêtes, et deux voyages à la db:
SELECT * FROM clients WHERE [email protected]
et SÉLECTIONNER * À PARTIR DES COMMANDES WHERE [email protected]
Un peu plus contre-intuitif est la situation où vous ant tous les clients et les commandes pour un pays:
SELECT * FROM clients WHERE [email protected]~~V~~singular~~3rd
et
commandes SELECT * FROM commandes INNER JOIN les clients sur clients.idclient = Orders.CustomerID. WHERE [email protected]
Notez que la requête de jointure renvoie des données à partir d'une seule table, mais utilise la jointure pour identifier les lignes à renvoyer.
Ensuite, une fois que vous avez les données dans votre ensemble de données, vous pouvez le parcourir en utilisant les méthodes getparentrow et getchildrows. C'est ainsi que ADO.Net gère les données hiérarchiques. Vous avez besoin de cette approche table-à-la-fois, car, en supposant que vous ayez des contraintes de clé étrangère dans votre base de données, vous devez insérer et mettre à jour dans l'ordre inverse depuis la suppression.
EDIT Oui, cela signifie que dans certaines circonstances, en fonction des données que vous voulez et de la structure de vos clés primaires, vous pourriez vous retrouver avec un ensemble de JOINS gigantesques qui tirent toujours les données de la table au fin de la hiérarchie. Cela peut sembler faux en termes de SQL traditionnel, mais en fait c'est bien. Le temps que vous avez perdu dans les requêtes multiples et plus complexes est sauvegardé par la quantité réduite de données que vous devez retirer sur le réseau, par rapport à une grande requête de jointure qui renvoie plusieurs copies des données parentes.