Net Core 3.1, Firebird 2.5 и FB.EF 7.5

В настоящее время у меня есть проект 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; }
}

Однако, когда я нажимаю обновление базы данных, я получаю сообщение об ошибке "Token Unknown". Это связано с тем, как 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. Возможно ли это, или дело безнадежно?

Если возможно, как я могу указать версию FB, которую должен ожидать EF?

2 ответа

Решение

На данный момент Firebird <3 не поддерживается. Но если вы внимательно выберете функции, вы сможете заставить его работать. Один из вариантов - отключить идентификацию и использовать последовательность и триггер.

В GENERATED BY DEFAULT AS IDENTITYдействительно был представлен в Firebird 3.

Согласно дискуссии о Жар - птице-нетто-провайдера Google Group в задачах с логическими свойствами?, для EF Core 3.1 поддерживается только Firebird 3.

Я не уверен, есть ли опция, которая подавляет создание столбца идентификаторов, но, вероятно, это не единственная проблема совместимости.

Другие вопросы по тегам