Entity Framework Code First 迁移和 Firebird
Entity Framework Code First Migrations and Firebird
我正在尝试在 Firebird 2.5 数据库上启用迁移。
我正在使用 VS2015,ADO 驱动程序和实体提供程序已安装并正常工作。
我对数据库进行了逆向工程,进行了必要的更改以使其正常工作。
我可以在包管理器控制台上执行启用迁移,然后添加迁移。
当我更新数据库时,发生了这种情况:
PM> update-database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201705301505265_Initial].
Applying explicit migration: 201705301505265_Initial.
ScriptHalted
如果我执行 update-database -Verbose 我会得到这个:
PM> update-database -Verbose
Using StartUp project 'Visao.Web'.
Using NuGet project 'Visao.Data'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'D:\Upwork\Fernando\SIGECOM.FDB' (DataSource: localhost, Provider: FirebirdSql.Data.FirebirdClient, Origin: Configuration).
Applying explicit migrations: [201705301505265_Initial].
Applying explicit migration: 201705301505265_Initial.
INSERT INTO "__MigrationHistory"("MigrationId", "ContextKey", "Model", "ProductVersion")
VALUES (CAST(_UTF8'201705301505265_Initial' AS VARCHAR(150)), CAST(_UTF8'Visao.Data.Migrations.Configuration' AS VARCHAR(300)), x'1F8B0800000000000400ECBDDD92DC3
还有很多字符,因为它试图向数据库中添加一个 blob。
已将 __MigrationHistory 数据库添加到 FDB 文件中:
所以我想它有点工作。
我不知道下一步该做什么,有人吗?
编辑
由于一切似乎都已创建,我认为错误可能来自迁移时的插入 Table。
也许是一个错误?
编辑 2
我 created an SQL script 使用 Update-Database -Script 并尝试 运行 在 IBExplorer 上并得到以下错误:
can't format message 13:896 -- message file C:\WINDOWS\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 1, column 226.
甚至 运行仅插入语句也不起作用。
编辑 3
在他们的跟踪器中创建一个 issue 以查看其他人是否知道
编辑 4
似乎负责 Bug Tracker 页面的人一直在删除错误。
无论如何,如果我更改供应商,无论是 MSSQL 还是 MySQL,迁移都有效。
编辑 5
这是创建的第一个迁移。它是空的,因为我正在尝试使用已经填充的现有数据库,现在我想使用 Code First。
public partial class Initial : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
正如 Mark Rotteveel 所说(他应该为这个答案加分)。您正在达到 Firebird 中语句大小的限制。我能用它做的不多,因为这需要是脚本(即使它直接执行),所以参数不起作用。
可能的解决方法是创建多个较小的模型并将它们用于迁移。或者始终将脚本生成到文件中并手动使用参数。
我正在尝试在 Firebird 2.5 数据库上启用迁移。
我正在使用 VS2015,ADO 驱动程序和实体提供程序已安装并正常工作。
我对数据库进行了逆向工程,进行了必要的更改以使其正常工作。
我可以在包管理器控制台上执行启用迁移,然后添加迁移。
当我更新数据库时,发生了这种情况:
PM> update-database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201705301505265_Initial].
Applying explicit migration: 201705301505265_Initial.
ScriptHalted
如果我执行 update-database -Verbose 我会得到这个:
PM> update-database -Verbose
Using StartUp project 'Visao.Web'.
Using NuGet project 'Visao.Data'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'D:\Upwork\Fernando\SIGECOM.FDB' (DataSource: localhost, Provider: FirebirdSql.Data.FirebirdClient, Origin: Configuration).
Applying explicit migrations: [201705301505265_Initial].
Applying explicit migration: 201705301505265_Initial.
INSERT INTO "__MigrationHistory"("MigrationId", "ContextKey", "Model", "ProductVersion")
VALUES (CAST(_UTF8'201705301505265_Initial' AS VARCHAR(150)), CAST(_UTF8'Visao.Data.Migrations.Configuration' AS VARCHAR(300)), x'1F8B0800000000000400ECBDDD92DC3
还有很多字符,因为它试图向数据库中添加一个 blob。
已将 __MigrationHistory 数据库添加到 FDB 文件中:
所以我想它有点工作。
我不知道下一步该做什么,有人吗?
编辑
由于一切似乎都已创建,我认为错误可能来自迁移时的插入 Table。
编辑 2
我 created an SQL script 使用 Update-Database -Script 并尝试 运行 在 IBExplorer 上并得到以下错误:
can't format message 13:896 -- message file C:\WINDOWS\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 1, column 226.
甚至 运行仅插入语句也不起作用。
编辑 3
在他们的跟踪器中创建一个 issue 以查看其他人是否知道
编辑 4
似乎负责 Bug Tracker 页面的人一直在删除错误。
无论如何,如果我更改供应商,无论是 MSSQL 还是 MySQL,迁移都有效。
编辑 5
这是创建的第一个迁移。它是空的,因为我正在尝试使用已经填充的现有数据库,现在我想使用 Code First。
public partial class Initial : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
正如 Mark Rotteveel 所说(他应该为这个答案加分)。您正在达到 Firebird 中语句大小的限制。我能用它做的不多,因为这需要是脚本(即使它直接执行),所以参数不起作用。
可能的解决方法是创建多个较小的模型并将它们用于迁移。或者始终将脚本生成到文件中并手动使用参数。