diff --git a/Oqtane.Server/Migrations/02010002_ChangeFolderNameAndPathColumnsSize.cs b/Oqtane.Server/Migrations/02010002_ChangeFolderNameAndPathColumnsSize.cs index 9da73003..7d79c31e 100644 --- a/Oqtane.Server/Migrations/02010002_ChangeFolderNameAndPathColumnsSize.cs +++ b/Oqtane.Server/Migrations/02010002_ChangeFolderNameAndPathColumnsSize.cs @@ -19,12 +19,14 @@ namespace Oqtane.Migrations { var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); - folderEntityBuilder.AlterStringColumn("Name", 250); + folderEntityBuilder.AlterStringColumn("Name", 256); // Drop the index is needed because the Path is already associated with IX_Folder + folderEntityBuilder.DropForeignKey("FK_Folder_Site"); folderEntityBuilder.DropIndex("IX_Folder"); - folderEntityBuilder.AlterStringColumn("Path", 1000); + folderEntityBuilder.AlterStringColumn("Path", 512); folderEntityBuilder.AddIndex("IX_Folder", new[] { "SiteId", "Path" }, true); + folderEntityBuilder.AddForeignKey("FK_Folder_Site"); } protected override void Down(MigrationBuilder migrationBuilder) diff --git a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs index 909593d0..a72371e2 100644 --- a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs +++ b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs @@ -183,6 +183,19 @@ namespace Oqtane.Migrations.EntityBuilders onDelete: foreignKey.OnDeleteAction); } + public void AddForeignKey(string name) + { + var foreignKey = ForeignKeys.Single(k => k.Name == name); + + _migrationBuilder.AddForeignKey( + name: RewriteName(foreignKey.Name), + table: RewriteName(EntityTableName), + column: RewriteName(foreignKey.ColumnName), + principalTable: RewriteName(foreignKey.PrincipalTable), + principalColumn: RewriteName(foreignKey.PrincipalColumn), + onDelete: foreignKey.OnDeleteAction); + } + public void DropForeignKey(ForeignKey foreignKey) { DropForeignKey(RewriteName(foreignKey.Name)); diff --git a/Oqtane.Server/Migrations/Framework/ForeignKey.cs b/Oqtane.Server/Migrations/Framework/ForeignKey.cs index 09f219e6..533518ab 100644 --- a/Oqtane.Server/Migrations/Framework/ForeignKey.cs +++ b/Oqtane.Server/Migrations/Framework/ForeignKey.cs @@ -20,6 +20,14 @@ namespace Oqtane.Migrations public Expression> Column { get;} + public string ColumnName + { + get + { + var body = Column.Body.ToString(); + return body.Substring(body.IndexOf(".") + 1); + } + } public ReferentialAction OnDeleteAction { get; } public string PrincipalTable { get; }