Example #1
0
    /// <summary>
    /// Obtain the Metadata from SF and update (or create) the local tables with all the metadata of the objects
    /// </summary>
    public List <EntityDefinition> ProcessObjectMetadata()
    {
        Console.WriteLine("Process Object Metadata");
        var objects = _client.QueryRecords <EntityDefinition>("SELECT QualifiedApiName,IsSearchable,IsRetrieveable, DeveloperName, IsFeedEnabled, IsCustomizable, DurableId, IsQueryable, IsLayoutable, IsDeprecatedAndHidden, IsCustomSetting, KeyPrefix, Label, NamespacePrefix FROM EntityDefinition").Result;

        if (!_db.ExistTable(_schemaData, "EntityDefinition"))
        {
            Console.WriteLine(" - Creating table [EntityDefinition]");
            _db.ExecuteSQL(@"create table [" + _schemaData + @"].[EntityDefinition] (
                QualifiedApiName varchar(128) not null,
                DeveloperName varchar(128) not null,
                DurableId varchar(64) not null,
                IsCustomizable bit not null,
                IsFeedEnabled bit not null,
                IsQueryable bit not null,
                IsLayoutable bit not null,
                IsDeprecatedAndhidden bit not null,
                IsCustomSetting bit not null,
                IsRetrieveable bit not null,
                IsSearchable bit not null,
                KeyPrefix varchar(3) null,
                Label varchar(255) null,
                NamespacePrefix varchar(32) null
            )");
        }
        if (!_db.ExistTable(_schemaData, "ObjectDescription"))
        {
            Console.WriteLine(" - Creating table [ObjectDescription]");
            _db.ExecuteSQL(@"create table [" + _schemaData + @"].[ObjectDescription] (
                ObjectName varchar(128) not null,
                Label varchar(128) not null,
                Name varchar(128) not null,
                Length varchar(64) not null,
                Type varchar(64) not null,
                Updateable bit not null,
                Calculated bit not null,
                Digits int null,
                Precision int null,
                Scale int null,
                IdLookup bit null,
                AutoNumber bit null,
                ReferenceTo varchar(max)
            )");
        }
        _db.ExecuteSQL("truncate table [" + _schemaData + "].[EntityDefinition]");
        _db.ExecuteSQL("truncate table [" + _schemaData + "].[ObjectDescription]");

        DataTable dt_EntityDef = _db.GetDataTable("SELECT * FROM [" + _schemaData + "].[EntityDefinition]");

        dt_EntityDef.Namespace = _schemaData;
        dt_EntityDef.TableName = "EntityDefinition";
        foreach (var o in objects)
        {
            var nr = dt_EntityDef.NewRow();
            nr["DeveloperName"]         = o.DeveloperName;
            nr["DurableId"]             = o.DurableId;
            nr["IsCustomizable"]        = o.IsCustomizable;
            nr["IsCustomSetting"]       = o.IsCustomSetting;
            nr["IsDeprecatedAndHidden"] = o.IsDeprecatedAndHidden;
            nr["IsFeedEnabled"]         = o.IsFeedEnabled;
            nr["IsLayoutable"]          = o.IsLayoutable;
            nr["IsQueryable"]           = o.IsQueryable;
            nr["IsRetrieveable"]        = o.IsRetrieveable;
            nr["IsSearchable"]          = o.IsSearchable;
            nr["KeyPrefix"]             = o.KeyPrefix;
            nr["Label"]            = o.Label;
            nr["NamespacePrefix"]  = o.NamespacePrefix;
            nr["QualifiedApiName"] = o.QualifiedApiName;
            dt_EntityDef.Rows.Add(nr);
        }
        _db.InsertDataTable(dt_EntityDef);

        Console.WriteLine("Metadata completed.");

        return(objects);
    }