ArcGIS Pro 3.6 API Reference Guide
ArcGIS.Core.Data Namespace / TableDefinition Class
Members Example

In This Topic
    TableDefinition Class
    In This Topic
    Represents the schema and properties of a Table.
    Syntax
    public class TableDefinition : Definition, System.IDisposable  
    Public Class TableDefinition 
       Inherits Definition
       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 Definitions from a Feature Service by Layer ID
    public async Task ObtainingDefinitionsFromFS(string url)
    {
        //Url examples for (federated) feature services
        //(by "ref" online):
        //https://sampleserver6.arcgisonline.com/arcgis/rest/services/LocalGovernment/Recreation/FeatureServer
        //(federated by ref on portal)
        //https://portal.example.com/server/rest/services/FeatureServiceName/FeatureServer
        //(federated by value - Hosted - on portal)
        //https://portal.example.com/server/rest/services/Hosted/FeatureServiceName/FeatureServer
    
        await QueuedTask.Run(() =>
        {
            var uri = new Uri(url, UriKind.Absolute);
            using (var fs_db = new ArcGIS.Core.Data.Geodatabase(new ServiceConnectionProperties(uri)))
            {
                //Assuming that id 0 is a FeatureClass for the given service
                FeatureClassDefinition featureClassDefinition =
                        fs_db.GetDefinition<FeatureClassDefinition>("0");
                string shapeField = featureClassDefinition.GetShapeField();
                IReadOnlyList<Field> fields = featureClassDefinition.GetFields();
    
                //Assuming that id 1 is a Table for the given service
                TableDefinition tableDefinition =
                            fs_db.GetDefinition<TableDefinition>("1");
                string objectIDField = tableDefinition.GetObjectIDField();
            }
        });
    }
    
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.CoreObjectsBase
          ArcGIS.Core.Data.Definition
             ArcGIS.Core.Data.TableDefinition
                ArcGIS.Core.Data.FeatureClassDefinition
                ArcGIS.Core.Data.Realtime.RealtimeTableDefinition

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.0 or higher.
    See Also