/// <summary>
        /// Find the sequence of tables from the table to its root in the inheritance chain.
        /// If the indicated table is not part of a supertype subtype relationship, the
        /// result contains just the single table.
        /// </summary>
        /// <param name="leafTableName">The most derived table.</param>
        /// <returns>The sequence of tables, with the root at the top of the stack.</returns>
        private Stack <Metadata.MetaModel.AxTable> SuperTables(string leafTableName)
        {
            Stack <Metadata.MetaModel.AxTable> result = new Stack <Metadata.MetaModel.AxTable>();

            Metadata.MetaModel.AxTable table = this.MetadataProvider.Tables.Read(leafTableName);

            while (table.SupportInheritance == Metadata.Core.MetaModel.NoYes.Yes &&
                   !string.IsNullOrWhiteSpace(table.Extends))
            {
                result.Push(table);
                table = this.MetadataProvider.Tables.Read(table.Extends);
            }

            result.Push(table); // stack the root.
            return(result);
        }
示例#2
0
        protected void addField(Metadata.MetaModel.AxTableField field)
        {
            if (this.namedElement is Table)
            {
                Metadata.MetaModel.AxTable axTable = this.MetadataProvider.Tables.Read(this.namedElement.Name);
                axTable.Fields.Add(field);

                this.MetaModelService.UpdateTable(axTable, this.ModelSaveInfo);
            }
            else
            {
                var extensionName = this.namedElement.Name.Split('.');

                Metadata.MetaModel.AxTableExtension axTableExtension = this.MetadataProvider.TableExtensions.Read(this.namedElement.Name);

                axTableExtension.Fields.Add(field);
            }
        }