Récemment, j'ai dû taper de la documentation sur les fournisseurs de données .net et sur ado.net. J'essaie d'obtenir des commentaires sur mes conclusions. S'il vous plaît examiner et fournir des corrections ou des opinions.Mon aperçu des fournisseurs de données .Net et ADO.Net est-il correct?
Résumé Ceci est un résumé de haut niveau de l'API .Net de base pour interagir avec une base de données. En tant que développeur avec principalement un environnement Java et PHP, je n'étais pas clair sur la façon dont ADO.Net lié à OleDb et je n'avais aucune idée de ce que l'on entendait par le terme "fournisseur de données .Net". J'ai créé ceci parce que la documentation de msdn est HEAVILY concentrée sur ADO.Net et ne donne pas une image claire de la manière dont les nombreux espaces de noms, interfaces et classes interagissent.
.Net Data Provider
- http://msdn.microsoft.com/en-us/library/a6cd7c08(v=VS.71).aspx
- Un fournisseur de données .NET Framework est utilisé pour la connexion à une base de données, commandes d'exécution, et la récupération résultats. Ces résultats sont traités directement par ou placés dans un ensemble de données ADO.NET . Cela signifie que .Net Data Provider implémente les interfaces définies dans l'espace de noms System.Data .
- Un fournisseur de données .Net est similaire à un pilote JDBC en Java
System.Data
- http://msdn.microsoft.com/en-us/library/system.data.aspx Cette page contient du texte qui fait vous pensez que ADO.Net est le CORE partie de l'accès aux données .Net, cependant la réalité est que ADO.Net est le plus haut niveau d'accès aux données et est reposant sur les fournisseurs de données .Net qui implémentent les interfaces dans le fichier système .
- À mon avis, il semble presque comme Microsoft tente de cacher le fonctionnement des connexions de base de données , de sorte que les utilisateurs sont piégés à l'aide des contrôles fournis par Visual Studio. Le System.Data namesapce contient interfaces qui doivent être définies par ALL .Net fournisseurs de données
System.Data base Interfaces
- IDbConnection
- IDbCommand
- IDataAdapter
- IDataReader
Exemples de système.Implémentations données
- Les espaces de noms suivants comprennent des classes qui mettent en œuvre le noyau des interfaces « .Net données Provider » définis dans System.Data
- System.Data.SqlClient
- System.Data.OLEDB
- System.Data.Odbc
- IBM.Data.DB2
- ByteFX.Data.MySqlClient
ADO.Net
- http://msdn.microsoft.com/en-us/library/27y4ybxw(v=VS.71).aspx
- ADO.Net est une requête de base de données et API de manipulation construite au-dessus des classes .NET Data Provider base . ADO.Net se concentre sur l'interaction de base de données multi-niveaux déconnectée, . À mon avis les classes de base ADO.Net devraient être dans un espace de noms séparé comme System.Data.ADO juste dans un souci de clarté.
Classes Core ADO.Net
- DataSet
- DataTable
- DataColumn
- DataRelation
Cela aide beaucoup. J'aimerais que les documents MSDN soient aussi clairs. Mon expérience en Java et en php a rendu difficile la relation avec ADO.Net (DataTable en particulier). Je suis totalement d'accord sur la programmation indépendante d'un fournisseur spécifique. Vous pouvez le faire même sans les classes DataTable et DataSet, qui, comme vous l'avez dit, sont indépendantes des fournisseurs, car ce sont des classes concrètes dans l'espace de noms System.Data. Si vous masquez l'implémentation "Fournisseur de données" derrière les interfaces dans l'espace de noms System.Data, vous pouvez modifier votre fournisseur à tout moment. Merci pour la réponse. –
@Welzie son vrai vous n'avez pas besoin d'utiliser le DataTable et DataSet comme le DataReader fournit une sémantique de lecteur DB plus facile à comprendre, mais DataTable (DT) et DataSet (DS) sont destinés à transmettre une signification différente d'un mouvement unidirectionnel de données. DT et DS sont destinés à fournir des implémentations proxy d'utilisation de données et à vous fournir une interface déconnectée à votre fournisseur de données, de sorte que le DT/DS agisse comme base de données et que les détails sous-jacents ne sont pas importants. Je pense que dans la pratique, ce n'est pas la façon dont le DT et le DS sont utilisés, mais ils ne sont généralement que des conteneurs de données. – GrayWizardx