IPersist* Objects
OLE objects can be stored in columns in a rowset. Such objects are required to expose either IPersistStream, IPersistStreamInit, or IPersistStorage. The rowset has to know how to create instances of these objects, so it must store the objects’ class IDs. How this is done is provider specific. For example, the provider might do one of the following:
-
Store a separate class ID in the data source with each object (as might be the case for a column that can store objects that use arbitrary class IDs).
-
Store a single class ID for an entire column in the metadata for that column (as might be the case when a column can store only a single type of object). See DBCOLUMN_CLSID in IColumnsRowset::GetColumnsRowset.
-
Not store a class ID at all and always use a default class ID (as might be the case when the provider can support only a single type of object).