IW4M-Admin/Data/Migrations/Sqlite/20210124164906_UpdateEFMetaToSupportNonClientMetaAndLinkedMeta.cs

129 lines
4.1 KiB
C#
Raw Normal View History

using Microsoft.EntityFrameworkCore.Migrations;
namespace Data.Migrations.Sqlite
{
public partial class UpdateEFMetaToSupportNonClientMetaAndLinkedMeta : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"PRAGMA foreign_keys = 0;
CREATE TABLE sqlitestudio_temp_table AS SELECT *
FROM EFMeta;
DROP TABLE EFMeta;
CREATE TABLE EFMeta (
MetaId INTEGER NOT NULL
CONSTRAINT PK_EFMeta PRIMARY KEY AUTOINCREMENT,
Active INTEGER NOT NULL,
ClientId INTEGER,
Created TEXT NOT NULL,
Extra TEXT,
[Key] TEXT NOT NULL,
Updated TEXT NOT NULL,
Value TEXT NOT NULL,
LinkedMetaId INTEGER CONSTRAINT IX_EFMeta_LinkedMetaId REFERENCES EFMeta (MetaId) ON DELETE SET NULL,
CONSTRAINT FK_EFMeta_EFClients_ClientId FOREIGN KEY (
ClientId
)
REFERENCES EFClients (ClientId) ON DELETE CASCADE
);
INSERT INTO EFMeta (
MetaId,
Active,
ClientId,
Created,
Extra,
[Key],
Updated,
Value
)
SELECT MetaId,
Active,
ClientId,
Created,
Extra,
""Key"",
Updated,
Value
FROM sqlitestudio_temp_table;
DROP TABLE sqlitestudio_temp_table;
CREATE INDEX IX_EFMeta_ClientId ON EFMeta(
""ClientId""
);
CREATE INDEX IX_EFMeta_Key ON EFMeta (
""Key""
);
CREATE INDEX IX_EFMeta_LinkedMetaId ON EFMeta (
LinkedMetaId
);
PRAGMA foreign_keys = 1;");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"PRAGMA foreign_keys = 0;
CREATE TABLE sqlitestudio_temp_table AS SELECT *
FROM EFMeta;
DROP TABLE EFMeta;
CREATE TABLE EFMeta (
MetaId INTEGER NOT NULL
CONSTRAINT PK_EFMeta PRIMARY KEY AUTOINCREMENT,
Active INTEGER NOT NULL,
ClientId INTEGER NOT NULL,
Created TEXT NOT NULL,
Extra TEXT,
[Key] TEXT NOT NULL,
Updated TEXT NOT NULL,
Value TEXT NOT NULL,
CONSTRAINT FK_EFMeta_EFClients_ClientId FOREIGN KEY (
ClientId
)
REFERENCES EFClients (ClientId) ON DELETE CASCADE
);
INSERT INTO EFMeta (
MetaId,
Active,
ClientId,
Created,
Extra,
[Key],
Updated,
Value
)
SELECT MetaId,
Active,
ClientId,
Created,
Extra,
""Key"",
Updated,
Value
FROM sqlitestudio_temp_table;
DROP TABLE sqlitestudio_temp_table;
CREATE INDEX IX_EFMeta_ClientId ON EFMeta(
""ClientId""
);
CREATE INDEX IX_EFMeta_Key ON EFMeta(
""Key""
);
PRAGMA foreign_keys = 1;");
}
}
}