They can also support functions such as indexing and filtering. An enumerator is an object that is used to list all the possible sources of data, while it is the command object which processes the consumer's queries. Not all providers have to support a command object. Providers built over flat files, for example, usually don't need one. The object model for an OLE DB provider.
Objects shown in grey are optional.
Consumers Consumers are modules that expose a common interface for accessing data, regardless of the provider. A consumer obtains data in a tabular format from the provider's rowset object, and can execute any of the commands supported by the provider. The UDA specification identifies three basic programming interfaces for consumers. Two of them are equivalent, while the third has slightly different features. Functionally speaking, the first two options are nearly identical.