private static FullTextIndexDefinition GetExistingFullTextIndexDefinition(ITableDefinition table) { const string CommandText = @" DECLARE @tableId INT = OBJECT_ID(@tableName) SELECT OBJECT_NAME(i.object_id) ,fc.name FROM sys.fulltext_indexes i INNER JOIN sys.fulltext_catalogs fc ON fc.fulltext_catalog_id = i.fulltext_catalog_id WHERE i.object_id = @tableId SELECT c.name ,ic.language_id FROM sys.fulltext_index_columns ic INNER JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id WHERE ic.object_id = @tableId"; var fullTableName = string.Format(CultureInfo.InvariantCulture, "[dbo].[{0}]", table.Name); using (var connectionManager = GetRuntimeDatabaseConnectionManager()) { using (var cmd = new SqlCommand(CommandText, connectionManager.Connection)) { cmd.Parameters.AddWithValue("@tableName", fullTableName); using (var reader = cmd.ExecuteReader()) { if (reader.Read()) { var index = new FullTextIndexDefinition { TableName = reader.GetString(0), CatalogName = reader.GetString(1) }; if (reader.NextResult()) { while (reader.Read()) { var column = new FullTextIndexColumnDefinition { ColumnName = reader.GetString(0), LCID = reader.GetInt32(1) }; index.Columns.Add(column); } } return index; } return null; } } } }
private FullTextIndexDefinition GetFullTextIndexDefinition(ITableDefinition table) { var index = new FullTextIndexDefinition { TableName = table.Name, CatalogName = Constants.SqlServerFullTextCatalogName }; foreach (var field in table.FieldList.Where(IncludeInFullTextIndex)) { var columnName = field.ColumnName; if (columnName == Constants.DerivedProcessColumnName) { if (Constants.SealedProcesses.Contains(table.Name)) { continue; } columnName = Constants.DerivedProcessDisplayNameColumnName; } index.Columns.Add(new FullTextIndexColumnDefinition { ColumnName = columnName, LCID = GetFullTextLanguageId(field.CultureName) }); } return index; }