Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架代码优先迁移和Firebird_C#_Entity Framework_Ef Code First_Firebird - Fatal编程技术网

C# 实体框架代码优先迁移和Firebird

C# 实体框架代码优先迁移和Firebird,c#,entity-framework,ef-code-first,firebird,C#,Entity Framework,Ef Code First,Firebird,我正在尝试在Firebird 2.5数据库上启用迁移 我使用的是VS2015,ADO驱动程序和实体提供程序已安装并正常工作 我对数据库进行了反向工程,进行了必要的更改以使其正常工作 我可以在PackageManager控制台上执行启用迁移,并添加迁移 当我更新数据库时,会发生以下情况: PM> update-database Specify the '-Verbose' flag to view the SQL statements being applied to the target

我正在尝试在Firebird 2.5数据库上启用迁移

我使用的是VS2015,ADO驱动程序和实体提供程序已安装并正常工作

我对数据库进行了反向工程,进行了必要的更改以使其正常工作

我可以在PackageManager控制台上执行启用迁移,并添加迁移

当我更新数据库时,会发生以下情况:

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
如果我更新数据库-详细,我会得到以下结果:

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文件:

所以我想这是可行的

我不知道下一步该怎么办,有人吗

编辑

由于似乎所有内容都已创建,因此我认为错误可能来自迁移表上的Insert。 也许是虫子

编辑2

我使用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.
即使只运行Insert语句也不起作用

编辑3

在他们的追踪器中创建一个链接,看看是否有其他人知道

编辑4

似乎负责Bug跟踪页面的人一直在删除Bug

无论如何,如果我更改了提供程序,无论是MSSQL还是MySQL,迁移都会起作用

编辑5

这是创建的第一个迁移。它是空的,因为我试图使用一个已经填充的现有数据库,现在我想先使用代码

public partial class Initial : DbMigration
    {
        public override void Up()
        {
        }

        public override void Down()
        {
        }
    }
正如马克·罗特维尔所说(这个答案他应该得到分数)。你在Firebird中达到了语句大小的限制。我对此无能为力,因为这需要脚本(即使直接执行),所以参数无法工作


可能的解决方法是创建多个较小的模型并将其用于迁移。或者始终将脚本生成到文件中并手动使用参数。

Sooo您的问题是,现在一切都完成了,您应该对数据库执行哪些操作?@RandRandom否,我的问题是如何使迁移工作正常,它们没有正确提交。不确定是否支持迁移。请参阅“命令的意外结束-第1行,第226列”-让我认为十六进制文字-x '012345 67 8..…DEF太长,在中间被剪切,代码的结尾部分是“2C0B00”,CAST(“UTF8”'1.1.3-40302’作为VARCHAR(32))只是在SQL核中不存在。在最大脚本长度、最大语句长度或最大VARCHAR长度限制()上存在实现限制,而且您似乎刚刚达到了一个限制。这句话的结尾似乎被打断了。因此-不要使用文本,使用参数:-d我唯一能确定的是二进制字符串超过了实现限制(该字符串为106112个字符,Firebird 2.5对字符串文本的限制为32K,对整个查询字符串的限制为64K(Firebird 3允许10MB查询字符串,尽管文本仍然限制为32K)。错误中的位置226是字符串文字的开头引号,因此出现了意外的命令结尾:解析器在放弃之前返回到该位置。但是,再次强调,最好将其放到邮件列表中;我已经有一段时间没有看到Jiri这样做了。是否可以用一次插入来生成一个插入,然后再生成一个通过多次更新将其余数据连接到blob?这正是我想知道的。小迁移的问题是,最终它会变得足够大,再次抛出。所以必须有另一种方法,对吗?@Markrottveel可能是的。立即弹出的问题是完成了一半的更新。@BrunoXavier不是关于迁移,但是关于model.True。我更担心从脚本手动执行(这是有效且受支持的场景)。我为它创建了一个票证(),以保留引用。