Я использую EntityFrameworkCore.Sqlite
, и я хочу использовать миграцию, все работает нормально, но когда я хочу удалить столбец, я не могу обновить базу данных.Я знаю, что у Sqlite
есть ограничение.
Это мой способ решения этой проблемы:
1.Создать новую таблицу
2.Вставить данные oldTable в новую таблицу
3. Удалите oldTable
4. Переименуйте новую таблицу в oldtable
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(name: "XSettings",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(nullable: true),
LName = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Settings", x => x.Id);
});
migrationBuilder.Sql("ALTER TABLE Settings DROP COLUMN HName;");
migrationBuilder.Sql("INSERT INTO XSettings * FROM Settings;");
migrationBuilder.DropTable(name: "Settings");
migrationBuilder.Sql("ALTER TABLE XSettings RENAME TO Settings;");
}
, но когда я запускаю мое приложение, столбец HName все еще существует, так как я могу удалить столбец?