diff --git a/src/Umbraco.Core/Migrations/Upgrade/V_8_6_0/AddDatabaseIndexesMissingOnForeignKeys.cs b/src/Umbraco.Core/Migrations/Upgrade/V_8_6_0/AddDatabaseIndexesMissingOnForeignKeys.cs
index 1fcb855eef..6c574bd3c9 100644
--- a/src/Umbraco.Core/Migrations/Upgrade/V_8_6_0/AddDatabaseIndexesMissingOnForeignKeys.cs
+++ b/src/Umbraco.Core/Migrations/Upgrade/V_8_6_0/AddDatabaseIndexesMissingOnForeignKeys.cs
@@ -1,8 +1,4 @@
-using NPoco;
-using System;
-using System.Linq;
-using Umbraco.Core.Persistence.DatabaseAnnotations;
-using Umbraco.Core.Persistence.Dtos;
+using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Migrations.Upgrade.V_8_6_0
{
@@ -14,40 +10,26 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_6_0
}
+ ///
+ /// Adds an index to the foreign key column parent on DictionaryDto's table
+ /// if it doesn't already exist
+ ///
public override void Migrate()
{
- var newIndexes = new[]
- {
- (typeof(DictionaryDto), nameof(DictionaryDto.Parent))
- };
+ var tableInfo = Context.Database.PocoDataFactory.ForType(typeof(DictionaryDto)).TableInfo;
+ tableInfo.TableName = tableInfo.TableName;
+ var indexName = "IX_" + tableInfo.TableName + "_Parent";
- foreach (var (type, propertyName) in newIndexes)
+ if (IndexExists(indexName) == false)
{
- CreateIndexIfNotExists(type, propertyName);
+ Create
+ .Index(indexName)
+ .OnTable(tableInfo.TableName)
+ .OnColumn("parent")
+ .Ascending()
+ .WithOptions().NonClustered()
+ .Do();
}
}
-
- private void CreateIndexIfNotExists(Type dto, string propertyName)
- {
- var property = dto.GetProperty(propertyName);
- var indexName = property.GetCustomAttributes(false).OfType().Single().Name;
-
- if (IndexExists(indexName))
- {
- return;
- }
-
- var tableName = dto.GetCustomAttributes(false).Single().Value;
- var columnName = property.GetCustomAttributes(false).OfType().Single().Name;
-
-
- Create
- .Index(indexName)
- .OnTable(tableName)
- .OnColumn(columnName)
- .Ascending()
- .WithOptions().NonClustered() // All newly defined indexes are non-clustered
- .Do();
- }
}
}