ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data Namespace / FeatureClassDefinition Class
Members Example

In This Topic
    FeatureClassDefinition Class
    In This Topic
    Represents the schema and properties of a FeatureClass.
    Object Model
    FeatureClassDefinition ClassEnvelope ClassSpatialReference Class
    Syntax
    public class FeatureClassDefinition : TableDefinition, System.IDisposable  
    Public Class FeatureClassDefinition 
       Inherits TableDefinition
       Implements System.IDisposable 
    Example
    Obtaining Definition from Geodatabase
    public async Task ObtainingDefinitionFromGeodatabase()
    {
        await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
        {
            using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
            {
                // Remember that for Enterprise databases you have to qualify your dataset names with the DatabaseName and UserName.
                TableDefinition enterpriseTableDefinition = geodatabase.GetDefinition<TableDefinition>("LocalGovernment.GDB.CitizenContactInfo");
    
                // It does not matter if the dataset is within a FeatureDataset or not.
                FeatureClassDefinition featureClassDefinition = geodatabase.GetDefinition<FeatureClassDefinition>("LocalGovernment.GDB.FireStation");
    
                // GetDefinition For a RelationshipClass.
                RelationshipClassDefinition relationshipClassDefinition = geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");
    
                // GetDefinition For a FeatureDataset.
                FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");
            }
        });
    }
    Obtaining List of Definitions from Geodatabase
    public async Task ObtainingDefinitionsFromGeodatabase()
    {
        await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
        {
            using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
            {
                IReadOnlyList<FeatureClassDefinition> enterpriseDefinitions = geodatabase.GetDefinitions<FeatureClassDefinition>();
                IEnumerable<Definition> featureClassesHavingGlobalID = enterpriseDefinitions.Where(definition => definition.HasGlobalID());
    
                IReadOnlyList<FeatureDatasetDefinition> featureDatasetDefinitions = geodatabase.GetDefinitions<FeatureDatasetDefinition>();
                bool electionRelatedFeatureDatasets = featureDatasetDefinitions.Any(definition => definition.GetName().Contains("Election"));
    
                IReadOnlyList<AttributedRelationshipClassDefinition> attributedRelationshipClassDefinitions = geodatabase.GetDefinitions<AttributedRelationshipClassDefinition>();
    
                IReadOnlyList<RelationshipClassDefinition> relationshipClassDefinitions = geodatabase.GetDefinitions<RelationshipClassDefinition>();
            }
        });
    }
    Obtaining Related Definitions from Geodatabase
    public async Task ObtainingRelatedDefinitionsFromGeodatabase()
    {
        await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
        {
            using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
            {
                // Remember the qualification of DatabaseName. for the RelationshipClass.
    
                RelationshipClassDefinition enterpriseDefinition = geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");
                IReadOnlyList<Definition> enterpriseDefinitions = geodatabase.GetRelatedDefinitions(enterpriseDefinition, DefinitionRelationshipType.DatasetsRelatedThrough);
                FeatureClassDefinition enterpriseAddressPointDefinition = enterpriseDefinitions.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint"))
            as FeatureClassDefinition;
    
                FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");
                IReadOnlyList<Definition> datasetsInAddressDataset = geodatabase.GetRelatedDefinitions(featureDatasetDefinition, DefinitionRelationshipType.DatasetInFeatureDataset);
                FeatureClassDefinition addressPointInAddressDataset = datasetsInAddressDataset.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint"))
            as FeatureClassDefinition;
    
                RelationshipClassDefinition addressPointHasSiteAddressInAddressDataset = datasetsInAddressDataset.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPointHasSiteAddresses"))
            as RelationshipClassDefinition;
            }
        });
    }
    Sorting a Table
    public RowCursor SortWorldCities(FeatureClass worldCitiesTable)
    {
        using (FeatureClassDefinition featureClassDefinition = worldCitiesTable.GetDefinition())
        {
            Field countryField = featureClassDefinition.GetFields()
              .First(x => x.Name.Equals("COUNTRY_NAME"));
            Field cityNameField = featureClassDefinition.GetFields()
              .First(x => x.Name.Equals("CITY_NAME"));
    
            // Create SortDescription for Country field
            SortDescription countrySortDescription = new SortDescription(countryField);
            countrySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
            countrySortDescription.SortOrder = SortOrder.Ascending;
    
            // Create SortDescription for City field
            SortDescription citySortDescription = new SortDescription(cityNameField);
            citySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
            citySortDescription.SortOrder = SortOrder.Ascending;
    
            // Create our TableSortDescription
            TableSortDescription tableSortDescription = new TableSortDescription(
              new List<SortDescription>() { countrySortDescription, citySortDescription });
    
            return worldCitiesTable.Sort(tableSortDescription);
        }
    }
    Inheritance Hierarchy
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also