我目前有一个ASP.NET Core 3.1项目,正在使用FirebirdSql.EntityFrameowrk.Core.Firebird v7.5.0。
[尝试通过具有主键和字符串列的简单迁移来更新数据库时
public class TB_CUSTOMER
{
[Key]
public int ID_CUSTOMER{ get; set; }
public string NAME{ get; set; }
}
但是,当我推送数据库更新时,出现“令牌未知”错误。这是由于EF如何创建SQL查询:
CREATE TABLE "TB_CUSTOMER" (
"ID_CUSTOMER" INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
"NAME" BLOB SUB_TYPE TEXT,
CONSTRAINT "PK_TB_CUSTOMER" PRIMARY KEY ("ID_CUSTOMER")
);
似乎GENERATED BY
是Firebird 3.0带来的语法(由于第三方软件的技术问题,我无法使用该语法)。我找不到有关是否可以将NET Core 3.1(和FB.EF 7.5.0)与FB 2.5一起使用的任何信息。是否可能,或者是迷失的原因?
如果可能,如何指定EF应该期望的FB版本?
GENERATED BY DEFAULT AS IDENTITY
的确是introduced in Firebird 3。
根据firebird-net-provider Google Group中对Problems with boolean properties?的讨论,EF Core 3.1仅支持Firebird 3。
我不确定是否有抑制显示身份列的选项,但这可能不是唯一的兼容性问题。
目前不支持Firebird <3。但是,如果您仔细选择功能,则可以使其正常运行。一种选择是禁用身份和use sequence and trigger。