81715bf0ca
build-and-deploy / deploy (push) Successful in 2m39s
Recreate Surahs table without IDENTITY instead of unsupported ALTER COLUMN.
92 lines
3.9 KiB
C#
92 lines
3.9 KiB
C#
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
namespace TafsirQuran.Infrastructure.Persistence.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class SurahExplicitIds : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
// SQL Server cannot ALTER IDENTITY off a column; recreate Surahs without identity.
|
|
migrationBuilder.Sql("""
|
|
IF OBJECT_ID(N'[FK_Ayahs_Surahs_SurahId]', N'F') IS NOT NULL
|
|
ALTER TABLE [Ayahs] DROP CONSTRAINT [FK_Ayahs_Surahs_SurahId];
|
|
IF OBJECT_ID(N'[FK_Episodes_Surahs_SurahId]', N'F') IS NOT NULL
|
|
ALTER TABLE [Episodes] DROP CONSTRAINT [FK_Episodes_Surahs_SurahId];
|
|
|
|
IF OBJECT_ID(N'[Surahs]', N'U') IS NOT NULL
|
|
BEGIN
|
|
SELECT * INTO [#SurahsBackup] FROM [Surahs];
|
|
DROP TABLE [Surahs];
|
|
END
|
|
|
|
CREATE TABLE [Surahs] (
|
|
[Id] int NOT NULL,
|
|
[Number] int NOT NULL,
|
|
[NameAr] nvarchar(80) NOT NULL,
|
|
[NameFa] nvarchar(80) NOT NULL,
|
|
CONSTRAINT [PK_Surahs] PRIMARY KEY ([Id])
|
|
);
|
|
|
|
CREATE UNIQUE INDEX [IX_Surahs_Number] ON [Surahs] ([Number]);
|
|
|
|
IF OBJECT_ID(N'tempdb..#SurahsBackup') IS NOT NULL
|
|
BEGIN
|
|
INSERT INTO [Surahs] ([Id], [Number], [NameAr], [NameFa])
|
|
SELECT [Id], [Number], [NameAr], [NameFa] FROM [#SurahsBackup];
|
|
DROP TABLE [#SurahsBackup];
|
|
END
|
|
|
|
ALTER TABLE [Ayahs] WITH CHECK ADD CONSTRAINT [FK_Ayahs_Surahs_SurahId]
|
|
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
|
|
ALTER TABLE [Episodes] WITH CHECK ADD CONSTRAINT [FK_Episodes_Surahs_SurahId]
|
|
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
|
|
""");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.Sql("""
|
|
IF OBJECT_ID(N'[FK_Ayahs_Surahs_SurahId]', N'F') IS NOT NULL
|
|
ALTER TABLE [Ayahs] DROP CONSTRAINT [FK_Ayahs_Surahs_SurahId];
|
|
IF OBJECT_ID(N'[FK_Episodes_Surahs_SurahId]', N'F') IS NOT NULL
|
|
ALTER TABLE [Episodes] DROP CONSTRAINT [FK_Episodes_Surahs_SurahId];
|
|
|
|
IF OBJECT_ID(N'[Surahs]', N'U') IS NOT NULL
|
|
BEGIN
|
|
SELECT * INTO [#SurahsBackup] FROM [Surahs];
|
|
DROP TABLE [Surahs];
|
|
END
|
|
|
|
CREATE TABLE [Surahs] (
|
|
[Id] int NOT NULL IDENTITY(1,1),
|
|
[Number] int NOT NULL,
|
|
[NameAr] nvarchar(80) NOT NULL,
|
|
[NameFa] nvarchar(80) NOT NULL,
|
|
CONSTRAINT [PK_Surahs] PRIMARY KEY ([Id])
|
|
);
|
|
|
|
CREATE UNIQUE INDEX [IX_Surahs_Number] ON [Surahs] ([Number]);
|
|
|
|
IF OBJECT_ID(N'tempdb..#SurahsBackup') IS NOT NULL
|
|
BEGIN
|
|
SET IDENTITY_INSERT [Surahs] ON;
|
|
INSERT INTO [Surahs] ([Id], [Number], [NameAr], [NameFa])
|
|
SELECT [Id], [Number], [NameAr], [NameFa] FROM [#SurahsBackup];
|
|
SET IDENTITY_INSERT [Surahs] OFF;
|
|
DROP TABLE [#SurahsBackup];
|
|
END
|
|
|
|
ALTER TABLE [Ayahs] WITH CHECK ADD CONSTRAINT [FK_Ayahs_Surahs_SurahId]
|
|
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
|
|
ALTER TABLE [Episodes] WITH CHECK ADD CONSTRAINT [FK_Episodes_Surahs_SurahId]
|
|
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
|
|
""");
|
|
}
|
|
}
|
|
}
|