/// <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); }
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); } }