2015-08-28 2 views
0

Я пытаюсь создать миграцию для базы данных MYSQL с EF 6 и столкнуться с проблемой, когда генерируется исключение MYSQL, сообщающее, что таблица не найдена. Из того, что я вижу, проблема исходит из того факта, что миграции имеют dbo. префикс для операторов. Ручное изменение файла миграции и удаление dbo. часть работ.Не удалось выполнить миграцию EF6

Странная вещь заключается в том, что ошибка возникает только тогда, когда существует вторая миграция, и после изучения первого файла миграции я заметил, что у него также есть 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 

Здесь я могу запустить обновление базы данных, но после этого сбрасывается сбой.

+0

Пожалуйста, покажите свои модели, сопоставления и полное исключение. – Kamo

ответ

0

Хорошо, похоже, что проблема заключалась в том, что у меня не было MySqlMigrationCodeGenerator, установленного как генератор кода миграции, и это вызывало генерацию префиксов dbo, которые приводят к проблемам с drop/create.

Смежные вопросы