ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Core.Data.DDL Namespace / SchemaBuilder Class / Build Method
Example

In This Topic
    Build Method (SchemaBuilder)
    In This Topic
    Performs all enqueued operations. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    public bool Build()
    Public Function Build() As Boolean

    Return Value

    true if all operations ran successfully; otherwise false.
    Exceptions
    ExceptionDescription
    There are no enqueued operations to run.
    A geodatabase-related exception has occurred.
    Example
    Creating a Table
    // Create a PoleInspection table with the following fields
    //  GlobalID
    //  ObjectID
    //  InspectionDate (date)
    //  InspectionResults (pre-existing InspectionResults coded value domain)
    //  InspectionNotes (string)
    
    // This static helper routine creates a FieldDescription for a GlobalID field with default values
    FieldDescription globalIDFieldDescription = FieldDescription.CreateGlobalIDField();
    
    // This static helper routine creates a FieldDescription for an ObjectID field with default values
    FieldDescription objectIDFieldDescription = FieldDescription.CreateObjectIDField();
    
    // Create a FieldDescription for the InspectionDate field
    FieldDescription inspectionDateFieldDescription = new FieldDescription("InspectionDate", FieldType.Date)
    {
      AliasName = "Inspection Date"
    };
    
    // This static helper routine creates a FieldDescription for a Domain field (from a pre-existing domain)
    FieldDescription inspectionResultsFieldDescription = FieldDescription.CreateDomainField("InspectionResults", new CodedValueDomainDescription(inspectionResultsDomain));
    inspectionResultsFieldDescription.AliasName = "Inspection Results";
    
    // This static helper routine creates a FieldDescription for a string field
    FieldDescription inspectionNotesFieldDescription = FieldDescription.CreateStringField("InspectionNotes", 512);
    inspectionNotesFieldDescription.AliasName = "Inspection Notes";
    
    // Assemble a list of all of our field descriptions
    List<FieldDescription> fieldDescriptions = new List<FieldDescription>()
      { globalIDFieldDescription, objectIDFieldDescription, inspectionDateFieldDescription, inspectionResultsFieldDescription, inspectionNotesFieldDescription };
    
    // Create a TableDescription object to describe the table to create
    TableDescription tableDescription = new TableDescription("PoleInspection", fieldDescriptions);
    
    // Create a SchemaBuilder object
    SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
    
    // Add the creation of PoleInspection to our list of DDL tasks
    schemaBuilder.Create(tableDescription);
    
    // Execute the DDL
    bool success = schemaBuilder.Build();
    
    // Inspect error messages
    if (!success)
    {
      IReadOnlyList<string> errorMessages = schemaBuilder.ErrorMessages;
      //etc.
    }
    
    Creating a feature class
    // Create a Cities feature class with the following fields
    //  GlobalID
    //  ObjectID
    //  Name (string)
    //  Population (integer)
    
    // This static helper routine creates a FieldDescription for a GlobalID field with default values
    FieldDescription globalIDFieldDescription = FieldDescription.CreateGlobalIDField();
    
    // This static helper routine creates a FieldDescription for an ObjectID field with default values
    FieldDescription objectIDFieldDescription = FieldDescription.CreateObjectIDField();
    
    // This static helper routine creates a FieldDescription for a string field
    FieldDescription nameFieldDescription = FieldDescription.CreateStringField("Name", 255);
    
    // This static helper routine creates a FieldDescription for an integer field
    FieldDescription populationFieldDescription = FieldDescription.CreateIntegerField("Population");
    
    // Assemble a list of all of our field descriptions
    List<FieldDescription> fieldDescriptions = new List<FieldDescription>()
      { globalIDFieldDescription, objectIDFieldDescription, nameFieldDescription, populationFieldDescription };
    
    // Create a ShapeDescription object
    ShapeDescription shapeDescription = new ShapeDescription(GeometryType.Point, spatialReference);
    
    // Alternatively, ShapeDescriptions can be created from another feature class.  In this case, the new feature class will inherit the same shape properties of the existing class
    ShapeDescription alternativeShapeDescription = new ShapeDescription(existingFeatureClass.GetDefinition());
    
    // Create a FeatureClassDescription object to describe the feature class to create
    FeatureClassDescription featureClassDescription = 
      new FeatureClassDescription("Cities", fieldDescriptions, shapeDescription);
    
    // Create a SchemaBuilder object
    SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
    
    // Add the creation of the Cities feature class to our list of DDL tasks
    schemaBuilder.Create(featureClassDescription);
    
    // Execute the DDL
    bool success = schemaBuilder.Build();
    
    // Inspect error messages
    if (!success)
    {
      IReadOnlyList<string> errorMessages = schemaBuilder.ErrorMessages;
      //etc.
    }
    
    Deleting a Table
    // Create a TableDescription object
    TableDescription tableDescription = new TableDescription(table.GetDefinition());
    
    // Create a SchemaBuilder object
    SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
    
    // Add the deletion of the table to our list of DDL tasks
    schemaBuilder.Delete(tableDescription);
    
    // Execute the DDL
    bool success = schemaBuilder.Build();
    
    Deleting a Feature Class
    // Create a FeatureClassDescription object
    FeatureClassDescription featureClassDescription = new FeatureClassDescription(featureClass.GetDefinition());
    
    // Create a SchemaBuilder object
    SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
    
    // Add the deletion fo the feature class to our list of DDL tasks
    schemaBuilder.Delete(featureClassDescription);
    
    // Execute the DDL
    bool success = schemaBuilder.Build();
    Creating a Range domain
    // Create a range description with minimum value = 0 and maximum value = 1000
    RangeDomainDescription rangeDomainDescriptionMinMax = new RangeDomainDescription("RangeDomain_0_1000",
      FieldType.Integer, 0, 1000)
    { Description = "Domain value ranges from 0 to 1000" };
    
    SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
    
    // Create  a range domain 
    schemaBuilder.Create(rangeDomainDescriptionMinMax);
    schemaBuilder.Build();
    
    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 8.1

    See Also