EF6迁移失败

时间:2015-08-28 08:18:16

标签: c# mysql entity-framework

我正在尝试使用EF 6为MYSQL数据库创建迁移并遇到问题,其中抛出MYSQL异常,通知未找到该表。从我看到的问题来自迁移有dbo的事实。语句上的前缀。手动更改迁移文件并删除dbo。部分工作。

这里奇怪的是,只有在存在第二次迁移时才会发生错误,并且在检查第一个迁移文件后,我注意到它也有一个dbo。前缀但仍然正确地创建数据库,并且只有在将数据库迁移到第二个版本时才会抛出异常。

创建数据库时没有dbo。即使在dbo时,表或任何其他数据库部分上的前缀。前缀存在于初始创建迁移中,因此我想知道必须有一部分代码可以处理它吗?

迁移代码:

public partial class Update1 : DbMigration
{
    public override void Up()
    {
        AddColumn("dbo.ProductOrderLine", "SomeData_Id", c => c.Int());
        CreateIndex("dbo.ProductOrderLine", "SomeData_Id");
        AddForeignKey("dbo.ProductOrderLine", "SomeData_Id", "dbo.User", "UserId");
    }

    public override void Down()
    {
        DropForeignKey("dbo.ProductOrderLine", "SomeData_Id", "dbo.User");
        DropIndex("dbo.ProductOrderLine", new[] { "SomeData_Id" });
        DropColumn("dbo.ProductOrderLine", "SomeData_Id");
    }
}

降级时的例外情况,有趣的升级工作很有效。

Reverting migrations: [201508280829293_Update1].
Reverting explicit migration: 201508280829293_Update1.
alter table `dbo.ProductOrderLine` drop foreign key `FK_dbo.ProductOrderLine_dbo.User_SomeData_Id`
MySql.Data.MySqlClient.MySqlException (0x80004005): Table '_gizmo_db.dbo.productorderline' doesn't exist

在这里,我可以运行数据库更新,但在降级失败后。

1 个答案:

答案 0 :(得分:0)

好吧,似乎问题是我没有将MySqlMigrationCodeGenerator设置为迁移代码生成器,这导致生成dbo前缀,导致丢弃/创建问题。

相关问题