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); } }
/// <summary> /// The method is called when the user has selected to view a table extension instance. /// The method generates a select on all fields, with no joins. /// </summary> /// <param name="selectedExtensionTable">The designer metadata designating the view.</param> /// <returns>The string containing the SQL command.</returns> private StringBuilder GenerateFromTableExtension(Tables.ITableExtension selectedExtensionTable, bool addGroupBy) { var result = new StringBuilder(); bool first = true; result.AppendLine(string.Format(CultureInfo.InvariantCulture, "USE {0}", BusinessDatabaseName)); result.AppendLine("GO"); result.AppendLine(); Metadata.MetaModel.AxTableExtension extension = this.MetadataProvider.TableExtensions.Read(selectedExtensionTable.Name); var baseTableName = selectedExtensionTable.Name.Split('.').First(); var tables = this.SuperTables(baseTableName); tableName = baseTableName; HashSet <string> extendedFields = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (var extendedField in extension.Fields) { extendedFields.Add(extendedField.Name); } if (tables.First().SaveDataPerCompany == Metadata.Core.MetaModel.NoYes.Yes) { result.AppendLine($"SELECT {SqlNameMangling.GetSqlTableName(tables.First().Name)}.DATAAREAID, COUNT(*) AS COUNTER"); } else { result.AppendLine("SELECT COUNT(*) AS COUNTER"); } result.AppendLine("FROM " + SqlNameMangling.GetSqlTableName(tables.First().Name)); if (tables.First().SaveDataPerCompany == Metadata.Core.MetaModel.NoYes.Yes && addGroupBy) { result.AppendLine($"GROUP BY {SqlNameMangling.GetSqlTableName(tables.First().Name)}.{SqlNameMangling.GetValidSqlNameForField("DATAAREAID")}"); } return(result); }