How to add your knowledge

Working with Schemas

    Table of contents
    1. 1. Creating a Schema

    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.