/// <inheritdoc/> protected override IPathNode VisitFullTextIndexInfo(FullTextIndexInfo fullTextIndex) { if (!providerInfo.Supports(ProviderFeatures.FullText)) { UpgradeLog.Warning(Strings.LogFullTextIndexesAreNotSupportedByCurrentStorageIgnoringIndexX, fullTextIndex.Name); return(null); } var table = GetTable(fullTextIndex.PrimaryIndex.ReflectedType); var primaryIndex = table.PrimaryIndex; var ftIndex = new StorageFullTextIndexInfo(table, fullTextIndex.Name); foreach (var fullTextColumn in fullTextIndex.Columns) { var column = table.Columns[fullTextColumn.Name]; string typeColumn = null; if (providerInfo.Supports(ProviderFeatures.FullTextColumnDataTypeSpecification)) { if (fullTextColumn.TypeColumn != null) { typeColumn = table.Columns[fullTextColumn.TypeColumn.Name].Name; } } else { UpgradeLog.Warning(Strings.LogSpecificationOfTypeColumnForFulltextColumnIsNotSupportedByCurrentStorageIgnoringTypeColumnSpecificationForColumnX, fullTextColumn.Column.Name); } new FullTextColumnRef(ftIndex, column, fullTextColumn.Configuration, typeColumn); } ftIndex.FullTextCatalog = fulltextCatalogNameBuilder.Build(fullTextIndex.PrimaryIndex.ReflectedType, table); ftIndex.ChangeTrackingMode = configuration.FullTextChangeTrackingMode; return(ftIndex); }
private void CreateFullTextIndex(TableInfo tableInfo, Table table, StorageFullTextIndexInfo fullTextIndexInfo) { var ftIndex = table.CreateFullTextIndex(fullTextIndexInfo.Name); ftIndex.UnderlyingUniqueIndex = tableInfo.PrimaryIndex.EscapedName; ftIndex.FullTextCatalog = "Default"; foreach (var columnRef in fullTextIndexInfo.Columns) { var configuration = columnRef.Configuration; var typeColumnName = columnRef.TypeColumnName; var column = columnRef.Value; var tableColumn = FindColumn(table, column.Name); var ftColumn = ftIndex.CreateIndexColumn(tableColumn); ftColumn.TypeColumn = (!typeColumnName.IsNullOrEmpty() && provider.Supports(ProviderFeatures.FullTextColumnDataTypeSpecification)) ? FindColumn(table, typeColumnName) : null; ftColumn.Languages.Add(new Language(configuration)); } }
/// <inheritdoc/> protected override IPathNode VisitFullTextIndex(FullTextIndex index) { var tableInfo = currentTable; var name = index.Name.IsNullOrEmpty() ? string.Format("FT_{0}", index.DataTable.Name) : index.Name; var ftIndex = new StorageFullTextIndexInfo(tableInfo, name) { FullTextCatalog = index.FullTextCatalog, ChangeTrackingMode = ConvertChangeTrackingMode(index.ChangeTrackingMode) }; foreach (var column in index.Columns) { var columnInfo = tableInfo.Columns[column.Column.Name]; string typeColumn = null; if (column.TypeColumn != null) { typeColumn = tableInfo.Columns[column.TypeColumn.Name].Name; } new FullTextColumnRef(ftIndex, columnInfo, column.Languages.Single().Name, typeColumn); } return(ftIndex); }