using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace TafsirQuran.Infrastructure.Persistence.Migrations { /// public partial class SurahExplicitIds : Migration { /// 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; """); } /// 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; """); } } }