.NET Base Classes The interfaces on which ADO.NET 1.0 and ADO.NET 1.1 data providers were built were retained for application compatibility. The base classes of ADO.NET 2.0 and higher provide additional functionality: ■ DbCommand ■ DbCommandBuilder ■ DbConnection ■ DbConnectionFactory (see “OracleConnectionFactory Class”) ■ DbDataAdaptor ■ DbDataReader ■ DBDataPermission ■ DbParameter ■ DbParameterCollection ■ DbConnectionStringBuilder ■ DbTransaction From a day-to-day programming perspective, these classes are provided as abstract implementation. This means they cannot be instantiated directly, but must be used with Provider factories. Each data provider must supply a Factory class, such as DDTek.OracleFactory, that derives from the DbFactory class, which contains a set of static methods. Each of these static methods is a factory method for producing an instance of the base classes. When a data provider is installed, it is registered with the .NET Framework. This allows the common .NET Framework DbFactory to locate any registered data provider that an application requires and provide a common mechanism to establish a connection to a data source. Ultimately, the .NET Framework provides a fully fledged common programming API for ADO.NET data sources. ADO.NET Entity Framework 4.2 introduced additional classes that can be used with Code First implementations.