Working with Schemas

FDO API

 
Working with Schemas
 
 
 

There are three primary operations involved with schema management:

  • Creating a schema
  • Describing a schema
  • Modifying a schema

Creating a Schema

The following basic steps are required to create a schema (some steps are optional; some may be done in an alternate order to achieve the same result):

  • Use the FdoFeatureSchema::Create(“SchemaName”, “FeatureSchema Description”) method to create a schema.
  • Use the FdoFeatureSchema::GetClasses() method to return a class collection.
  • Use the FdoClass::Create(“className”, “classDescription”) or FdoFeatureClass::Create(“className”, “classDescription”) method to create FdoClass or FdoFeatureClass type objects.
  • Use the FdoClassCollection::Add(class) method to add FdoClass or FdoFeatureClass objects to the class collection.
  • Use the FdoGeometricPropertyDefinition::Create(“name”, “Description”) method to create FdoGeometryProperty.
  • Use the FdoDataPropertyDefinition::Create(“name”, “Description”) method to create FdoDataProperty.
  • Use the FdoObjectPropertyDefinition::Create(“name”, “Description”) method to create FdoObjectProperty.
  • Use the FdoClassDefinition::GetProperties() and Add(property) methods to add property to class definition.
  • Use the FdoIApplySchemaCommand::SetFeatureSchema(feature schema) method to set the schema object for the IFdoApplySchemaCommand.
  • Use the FdoAssociationPropertydefinition class to represent the association between two classes. The class of the associated class must already be defined in the feature schema and cannot be abstract.
  • Use the FdoIApplySchemaCommand::Execute() method to execute changes to the feature schema.

For an example of schema creation, see Example: Creating a Feature Schema.

Use the FdoClassDefinition::GetIdentityProperties() and Add(Property Object) methods to set the property as FdoClass or FdoFeatureClass Identifier. FDO allows multiple Identifiers for both types of classes, although Identifiers have slight differences in both cases.