1.2.3 与提供程序无关的API
在新的ADO .NET 2.0中,用于各种数据库的提供程序进行了重构,在已有的通用命名空间System.Data.Common中,我们看到一些新的基类,如System.Data.Common.DbDataAdapter、System.Data.Common.DbDataReader、System.Data.Common.DbConnection、System.Data.Common.
DbTransaction等,而各个特定于不同类型数据库的相应托管提供程序则从这些类当中继承,例如对于System.Data.Common.DbCommand,其继承关系如下:
System.Object |
我们可以看到,在新增加的基类DbCommand下派生出了若干个特定于数据库类型的子类。以前,这些子类是存在的,只不过它们彼此之间并不存在这样的派生关系罢了。
在ADO .NET 2.0中,因为这种新的继承关系的存在,使我们开发数据库无关的数据访问层成为可能。
在开发数据库无关的数据访问层时,只需要调用上述基类的相应方法即可。比如查询数据,只需要调用DbDataAdapter的Fill方法,更新数据到数据库,只需要调用DbDataAdapter的Update方法,等等。而不需要关心这里的DbDataAdapter到底是哪一个子类的实例。
其他相关对象的操作也是类似的,比如需要操作数据库连接的地方使用DbConnection,需要使用事务的地方使用DbTransaction,等等。
至于如何实例化具体的子类,我们在下一节讲述。
| 回书目 上一节 下一节 |