diff --git a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs index 8f2cb20a..cfb58b72 100644 --- a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs +++ b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs @@ -319,6 +319,19 @@ namespace Oqtane.Migrations.EntityBuilders schema: Schema); } + public virtual void AddForeignKey(string foreignKeyName, string columnName, string principalTable, string principalColumn, string principalSchema, ReferentialAction onDelete) + { + _migrationBuilder.AddForeignKey( + name: RewriteName(foreignKeyName), + table: RewriteName(EntityTableName), + column: RewriteName(columnName), + principalTable: RewriteName(principalTable), + principalColumn: RewriteName(principalColumn), + principalSchema: RewriteName(principalSchema), + onDelete: onDelete, + schema: Schema); + } + /// /// Creates a Migration to add an Index to the Entity (table) /// @@ -368,6 +381,7 @@ namespace Oqtane.Migrations.EntityBuilders column: foreignKey.Column, principalTable: RewriteName(foreignKey.PrincipalTable), principalColumn: RewriteName(foreignKey.PrincipalColumn), + principalSchema: RewriteName(foreignKey.PrincipalSchema), onDelete: foreignKey.OnDeleteAction); } @@ -381,6 +395,7 @@ namespace Oqtane.Migrations.EntityBuilders column: RewriteName(foreignKey.ColumnName), principalTable: RewriteName(foreignKey.PrincipalTable), principalColumn: RewriteName(foreignKey.PrincipalColumn), + principalSchema: RewriteName(foreignKey.PrincipalSchema), onDelete: foreignKey.OnDeleteAction, schema: Schema); } diff --git a/Oqtane.Server/Migrations/Framework/ForeignKey.cs b/Oqtane.Server/Migrations/Framework/ForeignKey.cs index 533518ab..5f1bcd75 100644 --- a/Oqtane.Server/Migrations/Framework/ForeignKey.cs +++ b/Oqtane.Server/Migrations/Framework/ForeignKey.cs @@ -16,6 +16,16 @@ namespace Oqtane.Migrations OnDeleteAction = onDeleteAction; } + public ForeignKey(string name, Expression> column, string principalTable, string principalColumn, string principalSchema, ReferentialAction onDeleteAction) + { + Name = name; + Column = column; + PrincipalTable = principalTable; + PrincipalColumn = principalColumn; + PrincipalSchema = principalSchema; + OnDeleteAction = onDeleteAction; + } + public string Name { get; } public Expression> Column { get;} @@ -34,6 +44,8 @@ namespace Oqtane.Migrations public string PrincipalColumn { get; } + public string PrincipalSchema { get; } + } }