При создании миграции Entity Framework некоторые из моих изменений схемы генерируются в неправильном порядке. Это происходит при добавлении столбцов к существующему объекту, который имеет только один индекс первичного ключа (подробнее об этом позже). Например:
namespace MyApp.Migrations
{
using System.Data.Entity.Migrations;
public partial class MyMigration : DbMigration
{
public override void Up()
{
CreateTable(
"MyTableName",
c => new
{
Id = c.Int(nullable: false, identity: true),
// ... rest of columns
})
.PrimaryKey(t => t.Id);
DropTable("MyTableName");
}
public override void Down()
{
CreateTable(
"MyTableName",
c => new
{
Id = c.Int(nullable: false, identity: true),
// ... previous column state
})
.PrimaryKey(t => t.Id);
DropTable("MyTableName");
}
}
}
Для других изменений столбцов соответственно используются AddColumn()
и DropColumn()
соответственно. Для тех таблиц, столбцы которых обновляются и используют вышеупомянутые методы, у них есть существующие индексы внешнего ключа, в отличие от таблиц, с которыми у меня в настоящее время возникают проблемы.
Одно дело для EF - просто отбрасывать и воссоздавать таблицы, которые Я не возражаю против самого себя. Мне просто не нужно было go в файл миграции и вручную изменять порядок операций. Я чувствую, что EF должен быть достаточно умен, чтобы знать, что сначала он должен быть отброшен, а затем создан.
Это ошибка или я что-то здесь упускаю?