Ошибка при сопоставлении списка перечислений в EF Core с массивом PostgeSQL [закрыто]C#

Место общения программистов C#
Anonymous
Ошибка при сопоставлении списка перечислений в EF Core с массивом PostgeSQL [закрыто]

Сообщение Anonymous »

У меня есть класс с коллекцией перечислений, сопоставленных с собственным перечислением PostgreSQL:

Код: Выделить всё

internal class EventStackFilter
{
// other properties omitted
public List Statuses { get; set; } = [];
}
Перечисление отображается следующим образом:

Код: Выделить всё

services.AddDbContext(options =>
{
options.UseNpgsql(
CreateConnString(variables.DatabaseName),
npsqlOptions =>
{
npsqlOptions.UseQuerySplittingBehavior(QuerySplittingBehavior.SingleQuery);
npsqlOptions.MapEnum();
npsqlOptions.MapEnum();
});
options.UseDataSeeding();
options.ConfigureWarnings(c => c.Log((RelationalEventId.CommandExecuted, LogLevel.Debug)));
}, ServiceLifetime.Transient);
миграция с добавлением перечисления:

Код: Выделить всё

migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:data_point_command_execution_state", "completed,failed,in_progress,none,unknown")
.Annotation("Npgsql:Enum:event_stack_event_status", "closed,new,taken,unknown")
.OldAnnotation("Npgsql:Enum:data_point_command_execution_state", "completed,failed,in_progress,none,unknown");

migrationBuilder.CreateTable(
name: "event_stack_filters",
columns: table => new
{
//other irrelevant properties
statuses = table.Column(type: "event_stack_event_status[]", nullable: false)
},
Использование другого сопоставленного перечисления работает нормально, но когда система раздачи данных пытается добавить данные в EventStackFilter, это приводит к ошибке:

System.NotSupportedException: имя типа данных
'_event_stack_event_status' отсутствует в вашей базе данных. Возможно,
потребуется установить расширение или обновить его до более новой версии.

В сообщении об ошибке говорится, что _event_stack_event_status отсутствует, но перечисление называется event_stack_event_status. Сгенерированный SQL не содержит такого типа (массив определен как event_stack_event_status[]).
ИИ говорит, что это потому, что это массив, но я не смог найти этому подтверждения и не знаю, что с ним делать.

Подробнее здесь: https://stackoverflow.com/questions/798 ... esql-array

Вернуться в «C#»