129 lines
4.1 KiB
C#
129 lines
4.1 KiB
C#
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|||
|
|
|||
|
namespace SharedLibraryCore.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;");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|