1

我目前有一个 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 版本?

4

2 回答 2

2

目前不支持 Firebird <3。但是,如果您仔细选择功能,则可以使其发挥作用。一种选择是禁用身份并使用 sequence 和 trigger

于 2020-05-05T11:01:16.380 回答
2

GENERATED BY DEFAULT AS IDENTITY确实是在 Firebird 3 中引入的。

根据关于布尔属性问题中的firebird-net-provider Google Group的讨论?, EF Core 3.1 仅支持 Firebird 3。

我不确定是否有一个选项可以抑制生成标识列,但这可能不是唯一的兼容性问题。

于 2020-05-05T10:59:13.777 回答