using Microsoft.EntityFrameworkCore.Migrations; namespace Data.Migrations.Postgresql { public partial class MakeClientIPNullable : Migration { protected override void Up(MigrationBuilder migrationBuilder) { if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.Sqlite") { migrationBuilder.Sql(@"PRAGMA foreign_keys = 0; CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM EFAlias; DROP TABLE EFAlias; CREATE TABLE EFAlias ( AliasId INTEGER NOT NULL CONSTRAINT PK_EFAlias PRIMARY KEY AUTOINCREMENT, Active INTEGER NOT NULL, DateAdded TEXT NOT NULL, IPAddress INTEGER, LinkId INTEGER NOT NULL, Name TEXT NOT NULL, CONSTRAINT FK_EFAlias_EFAliasLinks_LinkId FOREIGN KEY ( LinkId ) REFERENCES EFAliasLinks (AliasLinkId) ON DELETE RESTRICT ); INSERT INTO EFAlias ( AliasId, Active, DateAdded, IPAddress, LinkId, Name ) SELECT AliasId, Active, DateAdded, IPAddress, LinkId, Name FROM sqlitestudio_temp_table; DROP TABLE sqlitestudio_temp_table; CREATE INDEX IX_EFAlias_LinkId ON EFAlias ( ""LinkId"" ); CREATE INDEX IX_EFAlias_IPAddress ON EFAlias( ""IPAddress"" ); CREATE INDEX IX_EFAlias_Name ON EFAlias( ""Name"" ); PRAGMA foreign_keys = 1; ", suppressTransaction:true); } else { migrationBuilder.AlterColumn( name: "IPAddress", table: "EFAlias", nullable: true, oldClrType: typeof(int)); } } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AlterColumn( name: "IPAddress", table: "EFAlias", nullable: false, oldClrType: typeof(int), oldNullable: true); } } }