Я пытаюсь выяснить, как настроить основной проект .net в linux, используя Postgresql в качестве сервера базы данных.
Я начал с проекта веб-API .net core 2.2 по умолчанию, который предоставляет вам объект WeatherForecast.
Я добавил к этому идентификатор, аннотировал его ключом и произвел первоначальную миграцию;
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "WeatherForecasts",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Date = table.Column<DateTime>(nullable: false),
TemperatureC = table.Column<int>(nullable: false),
Summary = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_WeatherForecasts", x => x.Id);
});
}
Когда я пытаюсь применить миграцию, я получаю следующую ошибку;
Npgsql.PostgresException (0x80004005): 42601: syntax error at or near "GENERATED"
Ошибка указывает на то, что в базе данных есть проблема со словом 'GENERATED'
Отладчик показывает точный запрос к базе данных;
CREATE TABLE "WeatherForecasts" (
"Id" integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"Date" timestamp without time zone NOT NULL,
"TemperatureC" integer NOT NULL,
"Summary" text NULL,
CONSTRAINT "PK_WeatherForecasts" PRIMARY KEY ("Id")
);
Я открылокно терминала, подключенное к postgresql cli и непосредственно попробовавшее создание, подтвердило, что слово GENERATED вызывало ошибку.
Есть какие-либо идеи относительно того, что относится к этому GENERATED?Нужно ли устанавливать другую версию postgres?(сейчас 9.6.15)
В моем CsProj есть следующие пакеты для Entity Framework и Postgresql;
"Microsoft.EntityFrameworkCore.Design" Version="3.0.0"
"Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.0.0"
"Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.1"
Большое спасибо