Skip to content

Use PRAGMA defer_foreign_keys instead of PRAGMA foreign_keys when migrating #35873

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -441,7 +441,7 @@ private IReadOnlyList<MigrationOperation> RewriteOperations(
if (rebuilds.Any())
{
operations.Add(
new SqlOperation { Sql = "PRAGMA foreign_keys = 0;", SuppressTransaction = true });
new SqlOperation { Sql = "PRAGMA defer_foreign_keys = ON;", SuppressTransaction = false });
}

foreach (var ((table, schema), _) in rebuilds)
@@ -458,12 +458,6 @@ private IReadOnlyList<MigrationOperation> RewriteOperations(
});
}

if (rebuilds.Any())
{
operations.Add(
new SqlOperation { Sql = "PRAGMA foreign_keys = 1;", SuppressTransaction = true });
}

foreach (var index in indexesToRebuild)
{
operations.Add(CreateIndexOperation.CreateFrom(index));
264 changes: 44 additions & 220 deletions test/EFCore.Sqlite.FunctionalTests/Migrations/MigrationsSqliteTest.cs
Original file line number Diff line number Diff line change
@@ -162,7 +162,7 @@ public override async Task Alter_table_add_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -171,10 +171,6 @@ public override async Task Alter_table_add_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -198,7 +194,7 @@ public override async Task Alter_table_add_comment_non_default_schema()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -207,10 +203,6 @@ public override async Task Alter_table_add_comment_non_default_schema()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -234,7 +226,7 @@ public override async Task Alter_table_change_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -243,10 +235,6 @@ public override async Task Alter_table_change_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -268,7 +256,7 @@ public override async Task Alter_table_remove_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -277,10 +265,6 @@ public override async Task Alter_table_remove_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -306,7 +290,7 @@ public override async Task Rename_table()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -315,10 +299,6 @@ public override async Task Rename_table()
//
"""
ALTER TABLE "ef_temp_Persons" RENAME TO "Persons";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -344,7 +324,7 @@ public override async Task Rename_table_with_primary_key()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -353,10 +333,6 @@ public override async Task Rename_table_with_primary_key()
//
"""
ALTER TABLE "ef_temp_Persons" RENAME TO "Persons";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -385,7 +361,7 @@ public override async Task Rename_table_with_json_column()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -394,10 +370,6 @@ public override async Task Rename_table_with_json_column()
//
"""
ALTER TABLE "ef_temp_NewEntities" RENAME TO "NewEntities";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -508,7 +480,7 @@ public override async Task Add_column_with_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -517,10 +489,6 @@ public override async Task Add_column_with_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -568,7 +536,7 @@ public override async Task Add_column_with_check_constraint()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -577,10 +545,6 @@ public override async Task Add_column_with_check_constraint()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -603,7 +567,7 @@ public override async Task Alter_column_make_required()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -612,10 +576,6 @@ public override async Task Alter_column_make_required()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -638,7 +598,7 @@ public override async Task Alter_column_make_required_with_index()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -647,10 +607,6 @@ public override async Task Alter_column_make_required_with_index()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""",
//
"""
@@ -678,7 +634,7 @@ public override async Task Alter_column_make_required_with_composite_index()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -687,10 +643,6 @@ public override async Task Alter_column_make_required_with_composite_index()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""",
//
"""
@@ -721,7 +673,7 @@ public override async Task Alter_column_make_computed(bool? stored)
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -730,10 +682,6 @@ public override async Task Alter_column_make_computed(bool? stored)
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -758,7 +706,7 @@ public override async Task Alter_column_change_computed()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -767,10 +715,6 @@ public override async Task Alter_column_change_computed()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -795,7 +739,7 @@ public override async Task Alter_column_change_computed_recreates_indexes()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -804,10 +748,6 @@ public override async Task Alter_column_change_computed_recreates_indexes()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""",
//
"""
@@ -836,7 +776,7 @@ public override async Task Alter_column_change_computed_type()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -845,10 +785,6 @@ public override async Task Alter_column_change_computed_type()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -873,7 +809,7 @@ public override async Task Alter_column_make_non_computed()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -882,10 +818,6 @@ public override async Task Alter_column_make_non_computed()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -908,7 +840,7 @@ public override async Task Alter_column_add_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -917,10 +849,6 @@ public override async Task Alter_column_add_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -945,7 +873,7 @@ public override async Task Alter_computed_column_add_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -954,10 +882,6 @@ public override async Task Alter_computed_column_add_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -980,7 +904,7 @@ public override async Task Alter_column_change_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -989,10 +913,6 @@ public override async Task Alter_column_change_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1014,7 +934,7 @@ public override async Task Alter_column_remove_comment()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1023,10 +943,6 @@ public override async Task Alter_column_remove_comment()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1048,7 +964,7 @@ public override async Task Alter_column_set_collation()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1057,10 +973,6 @@ public override async Task Alter_column_set_collation()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1082,7 +994,7 @@ public override async Task Alter_column_reset_collation()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1091,10 +1003,6 @@ public override async Task Alter_column_reset_collation()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1159,7 +1067,7 @@ public override async Task Convert_json_entities_to_regular_owned()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1168,10 +1076,6 @@ public override async Task Convert_json_entities_to_regular_owned()
//
"""
ALTER TABLE "ef_temp_Entity" RENAME TO "Entity";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1216,7 +1120,7 @@ public override async Task Convert_regular_owned_entities_to_json()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1225,10 +1129,6 @@ public override async Task Convert_regular_owned_entities_to_json()
//
"""
ALTER TABLE "ef_temp_Entity" RENAME TO "Entity";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1258,7 +1158,7 @@ public override async Task Convert_string_column_to_a_json_column_containing_req
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1267,10 +1167,6 @@ public override async Task Convert_string_column_to_a_json_column_containing_req
//
"""
ALTER TABLE "ef_temp_Entity" RENAME TO "Entity";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1299,7 +1195,7 @@ public override async Task Drop_column()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1308,10 +1204,6 @@ public override async Task Drop_column()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1333,7 +1225,7 @@ public override async Task Drop_column_primary_key()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1342,10 +1234,6 @@ public override async Task Drop_column_primary_key()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1368,7 +1256,7 @@ public override async Task Drop_json_columns_from_existing_table()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1377,10 +1265,6 @@ public override async Task Drop_json_columns_from_existing_table()
//
"""
ALTER TABLE "ef_temp_Entity" RENAME TO "Entity";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1460,7 +1344,7 @@ public override async Task Add_primary_key_int()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1469,10 +1353,6 @@ public override async Task Add_primary_key_int()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1494,7 +1374,7 @@ public override async Task Add_primary_key_string()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1503,10 +1383,6 @@ public override async Task Add_primary_key_string()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1528,7 +1404,7 @@ SELECT IFNULL("SomeField", '')
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1537,10 +1413,6 @@ SELECT IFNULL("SomeField", '')
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1564,7 +1436,7 @@ public override async Task Add_primary_key_composite_with_name()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1573,10 +1445,6 @@ public override async Task Add_primary_key_composite_with_name()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1598,7 +1466,7 @@ public override async Task Drop_primary_key_int()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1607,10 +1475,6 @@ public override async Task Drop_primary_key_int()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1632,7 +1496,7 @@ public override async Task Drop_primary_key_string()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1641,10 +1505,6 @@ public override async Task Drop_primary_key_string()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1672,7 +1532,7 @@ public override async Task Add_foreign_key()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1681,10 +1541,6 @@ public override async Task Add_foreign_key()
//
"""
ALTER TABLE "ef_temp_Orders" RENAME TO "Orders";
""",
//
"""
PRAGMA foreign_keys = 1;
""",
//
"""
@@ -1716,7 +1572,7 @@ public override async Task Add_foreign_key_with_name()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1725,10 +1581,6 @@ public override async Task Add_foreign_key_with_name()
//
"""
ALTER TABLE "ef_temp_Orders" RENAME TO "Orders";
""",
//
"""
PRAGMA foreign_keys = 1;
""",
//
"""
@@ -1759,7 +1611,7 @@ public override async Task Drop_foreign_key()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1768,10 +1620,6 @@ public override async Task Drop_foreign_key()
//
"""
ALTER TABLE "ef_temp_Orders" RENAME TO "Orders";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1795,7 +1643,7 @@ public override async Task Add_unique_constraint()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1804,10 +1652,6 @@ public override async Task Add_unique_constraint()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1832,7 +1676,7 @@ public override async Task Add_unique_constraint_composite_with_name()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1841,10 +1685,6 @@ public override async Task Add_unique_constraint_composite_with_name()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1867,7 +1707,7 @@ public override async Task Drop_unique_constraint()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1876,10 +1716,6 @@ public override async Task Drop_unique_constraint()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1903,7 +1739,7 @@ public override async Task Add_check_constraint_with_name()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1912,10 +1748,6 @@ public override async Task Add_check_constraint_with_name()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1939,7 +1771,7 @@ public override async Task Alter_check_constraint()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1948,10 +1780,6 @@ public override async Task Alter_check_constraint()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

@@ -1974,7 +1802,7 @@ public override async Task Drop_check_constraint()
""",
//
"""
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
""",
//
"""
@@ -1983,10 +1811,6 @@ public override async Task Drop_check_constraint()
//
"""
ALTER TABLE "ef_temp_People" RENAME TO "People";
""",
//
"""
PRAGMA foreign_keys = 1;
""");
}

Original file line number Diff line number Diff line change
@@ -834,16 +834,13 @@ public virtual void DropColumn_defers_subsequent_RenameColumn()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -885,16 +882,13 @@ public virtual void Deferred_RenameColumn_defers_subsequent_AddColumn()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -939,16 +933,13 @@ public virtual void Deferred_RenameColumn_defers_subsequent_CreateIndex_unique()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -988,16 +979,13 @@ public virtual void DropColumn_defers_subsequent_AddColumn_required()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -1040,7 +1028,7 @@ public virtual void Deferred_AddColumn_defers_subsequent_CreateIndex()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
@@ -1049,9 +1037,6 @@ public virtual void Deferred_AddColumn_defers_subsequent_CreateIndex()
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
GO
CREATE INDEX "IX_Blog_Name" ON "Blog" ("Name");
""");
}
@@ -1089,16 +1074,13 @@ public virtual void DropColumn_in_table_which_has_another_spatial_column()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -1132,16 +1114,13 @@ public virtual void RenameTable_preserves_pending_rebuilds()
FROM "Blog";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Blog";
GO
ALTER TABLE "ef_temp_Blog" RENAME TO "Blog";
GO
PRAGMA foreign_keys = 1;
""");
}

@@ -1171,16 +1150,13 @@ public virtual void Rebuild_preserves_column_order()
FROM "Ordinal";
GO
PRAGMA foreign_keys = 0;
PRAGMA defer_foreign_keys = ON;
GO
DROP TABLE "Ordinal";
GO
ALTER TABLE "ef_temp_Ordinal" RENAME TO "Ordinal";
GO
PRAGMA foreign_keys = 1;
""");
}
}