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; }
}

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


person A Sousa    schedule 04.05.2020    source источник


Ответы (2)


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

person cincura.net    schedule 05.05.2020
comment
Отлично! Это было именно то, что я искал! Кроме того, поскольку база данных, с которой я работаю, использует нетрадиционную номенклатуру EF Core, мне пришлось вручную установить внешние ключи с помощью атрибутов ... - person A Sousa; 05.05.2020

GENERATED BY DEFAULT AS IDENTITY действительно был , введенным в Firebird 3.

Согласно обсуждению в группе Google firebird-net-provider в Проблемы с логическими свойствами?, только Firebird 3 поддерживается для EF Core 3.1.

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

person Mark Rotteveel    schedule 05.05.2020