We’ve already defined conventional ADO.NET as the two available data access options that were introduced with .NET 1.0; namely, the raw data access objects and the DataSet/DataAdapter abstraction over those objects. You’ll now explore both of these approaches, beginning with the raw objects.
The raw ADO.NET data access objects are based on the following set of interfaces in the .NET Framework, which are defined in the System.Data namespace:
These interfaces define the operations that can be conducted against the database (or other back-end data source) by any concrete provider that implements them. For SQL Server, there is a managed ...