protected DocumenterBase(DocumenterContextBase context, SqlEngineVersion version, string databaseName = "") { Context = context; Version = version; DatabaseName = databaseName; Helper = new DocumenterHelper(context.Settings); }
protected DocumenterWriterBase(IDocumenterWriter documenterWriter, DocumenterContext context, SqlEngineVersion version, string databaseName = "", string fileName = null) : base(context, version, databaseName) { DocumenterWriter = documenterWriter; Helper = new DocumenterHelper(context.Settings); FileName = fileName; }
protected override void AddForeignKeySettingsMultiColumn(StringBuilder sb, DocumenterHelper helper, ForeignKey fkOnColumn) { sb.AppendLine(";") .AppendLine("") .AppendLine("#pragma warning disable IDE1006 // Naming Styles") .Append(2, "public ForeignKey ") .Append(fkOnColumn.Name) .Append(" { get; } = ") .Append(Version) .Append(".SetForeignKeyTo(nameof(") .Append(helper.GetSimplifiedSchemaAndTableName(fkOnColumn.ReferredTable.SchemaAndTableName, DatabaseDeclaration.SchemaTableNameSeparator.ToString(CultureInfo.InvariantCulture))) .Append("), ") .AppendLine("new []") .AppendLine("#pragma warning restore IDE1006 // Naming Styles") .AppendLine(3, "{"); foreach (var fkColumnMap in fkOnColumn.ForeignKeyColumns) { sb.Append(4, "new ColumnReference(") .Append("nameof(") .Append(fkColumnMap.ForeignKeyColumn.Name) .Append("), nameof(") .Append(fkColumnMap.ReferredColumn.Table.SchemaAndTableName) .Append('.') .Append(fkColumnMap.ReferredColumn.Name) .AppendLine(")),"); } sb.Append(3, "})"); }
protected void AddForeignKeySettings(SqlColumn column, StringBuilder sb, DocumenterHelper helper) { var fkOnColumn = column.Table.Properties.OfType <ForeignKey>().FirstOrDefault(fk => fk.ForeignKeyColumns.Any(fkc => fkc.ForeignKeyColumn == column)); if (fkOnColumn != null) { if (GeneratorContext.GeneratorSettings.ShouldCommentOutFkReferences && GeneratorContext.Customizer?.ShouldSkip(fkOnColumn.ReferredTable.SchemaAndTableName) == true) { sb.Append("; //"); } // TODO gen AddForeignkeys? if (fkOnColumn.ForeignKeyColumns.Count == 1) { AddForeignKeySettingsSingleColumn(sb, helper, fkOnColumn); } else { // Only create after last if (column == fkOnColumn.ForeignKeyColumns.Last().ForeignKeyColumn) { AddForeignKeySettingsMultiColumn(sb, helper, fkOnColumn); } } } }
protected virtual void AddForeignKeySettingsSingleColumn(StringBuilder sb, DocumenterHelper helper, ForeignKey fkOnColumn) { var tableName = helper.GetSimplifiedSchemaAndTableName(fkOnColumn.ReferredTable.SchemaAndTableName, DatabaseDeclaration.SchemaTableNameSeparator.ToString(CultureInfo.InvariantCulture)); sb.Append(".SetForeignKeyToColumn(nameof(") .Append(DatabaseName) .Append('.') .Append(tableName) .Append("), nameof(") .Append(tableName) .Append("Table.") .Append(fkOnColumn.ForeignKeyColumns[0].ReferredColumn.Name) .Append(')'); // table.AddInt("PrimaryId").SetForeignKeyToTable(nameof(Primary), new SqlEngineVersionSpecificProperty(MsSqlVersion.MsSql2016, "Nocheck", "true") sb.Append(AddSqlEngineVersionSpecificProperties(fkOnColumn.SqlEngineVersionSpecificProperties)); sb.Append(')'); }
protected override void AddForeignKeySettingsMultiColumn(StringBuilder sb, DocumenterHelper helper, ForeignKey fkOnColumn) { sb.AppendLine(";") .Append(3, "table.SetForeignKeyTo(nameof(") .Append(helper.GetSimplifiedSchemaAndTableName(fkOnColumn.ReferredTable.SchemaAndTableName, DatabaseDeclaration.SchemaTableNameSeparator.ToString(CultureInfo.InvariantCulture))) .AppendLine("), "); sb.Append("new []") .AppendLine(4, "{"); foreach (var fkColumnMap in fkOnColumn.ForeignKeyColumns) { sb.Append(5, "new ColumnReference(\"") .Append(fkColumnMap.ForeignKeyColumn.Name) .Append("\", \"") .Append(fkColumnMap.ReferredColumn.Name) .AppendLine("\"),"); } sb.Append(3, "})"); }
public override string GetColumnCreation(SqlColumn column, DocumenterHelper helper, string extraAnnotation, string comment) { var sb = new StringBuilder(); if (GeneratorContext.GeneratorSettings.ShouldCommentOutColumnsWithFkReferencedTables && IsForeignKeyReferencedTableSkipped(column)) { sb.Append("// "); } sb.Append(3, "table.") .Append(GetColumnCreationMethod(column)) .Append(IsNullable(column)) .Append(')'); if (column.Table.Properties.OfType <PrimaryKey>().Any(x => x.SqlColumns.Any(y => y.SqlColumn == column))) { sb.Append(".SetPK()"); } if (column.Properties.OfType <Identity>().Any()) { sb.Append(".SetIdentity()"); } if (!GeneratorContext.GeneratorSettings.NoForeignKeys) { AddForeignKeySettings(column, sb, helper); } // TODO Default Value + config if (!string.IsNullOrEmpty(extraAnnotation)) { sb.Append(extraAnnotation); } sb.Append(';'); var descriptionProperty = column.Properties.OfType <SqlColumnDescription>().FirstOrDefault(); var description = descriptionProperty?.Description ?.Replace("\r", "", StringComparison.OrdinalIgnoreCase) ?.Replace("\n", "", StringComparison.OrdinalIgnoreCase) ?.Trim(); if (!string.IsNullOrEmpty(description)) { sb.Append(" // ").Append(description); if (!string.IsNullOrEmpty(comment)) { sb.Append(' ').Append(comment); } } else if (!string.IsNullOrEmpty(comment)) { sb.Append(" // ").Append(comment); } return(sb.ToString()); }
protected abstract void AddForeignKeySettingsMultiColumn(StringBuilder sb, DocumenterHelper helper, ForeignKey fkOnColumn);
public abstract string GetColumnCreation(SqlColumn column, DocumenterHelper helper, string extraAnnotation, string comment);