.Net Data Provider Overview
This is a high level summary of the basic .Net API’s for interacting with a database. This includes a short description of each and how they relate to each other. As a developer with mainly a Java and PHP background I was unclear about how ADO.Net related to OleDb and I had no idea what was meant by the term “.Net Data Provider”. I created this because the msdn documentation is HEAVILY focused on ADO.Net and does not give a clear picture of how the many namespaces, interfaces, and classes interact. Please add comments to correct or enlighten. Note at this time the relation of .Net Providers to Nhiberante, LINQ to SQL, and Entity Framework is not covered in this post.
.Net Data Provider
- A .NET Framework data provider is used for connecting to a database, executing commands, and retrieving results. Those results are either processed directly, or placed in an ADO.NET DataSet.
What that actually means is that a .Net Data Provider implements the interfaces defined in the System.Data namespace.
- A .Net Data Provider is similar to a JDBC driver in Java
- This page contains text that makes you believe that ADO.Net is the CORE part of .Net data access, however the reality is that ADO.Net is the highest level of data access and is built upon the .Net Data Providers that implement the interfaces in the System.Data.
- In my opinion it almost seems like microsoft is trying to hide how database connections work, so that users are trapped using controls provided by visual studio.
- This namesapce contains the Interfaces that need to be defined by ALL .Net Data Providers
- Core Interfaces
Four examples of System.Data Implementations
- The below namespaces include classes that implement the core “.Net Data Provider” interfaces defined in System.Data
- ADO.Net is a database query and manipulation API built on top of the basic .Net Data Provider classes. ADO.Net focuses on disconnected, multi-tier database interaction. In my opinion the core ADO.Net classes should be in a separate namespace like System.Data.ADO just for the sake of clarity.
- Core Classes