Невозможно сохранить HashSet с типом столбца jsonb в EF Core после обновления до .NET 9 и PostgreSQL 9.0.1.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно сохранить HashSet с типом столбца jsonb в EF Core после обновления до .NET 9 и PostgreSQL 9.0.1.

Сообщение Anonymous »

Я обновляю проект с .NET 6 до .NET 9 и PostgreSQL до версии 9.0.1.
В моей модели предметной области у меня есть следующее свойство:

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

public HashSet Property { get; set; }

В базе данных оба свойства хранятся в виде столбцов jsonb со значением по умолчанию, равным '[]'::jsonb.
Однако, после обновления я столкнулся со следующей ошибкой:

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

System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.HashSet`1[System.Guid]' to type 'System.Collections.Generic.IList`1[System.Guid]'.
Я подозреваю, что проблема связана с тем, как EF Core сериализует столбцы HashSet и jsonb в обновленной среде.
Дополнительные сведения:
Предыдущее поведение EF Core/базы данных: это работало без проблем в .NET 6 и PostgreSQL (более старая версия).
Мои вопросы:
Есть там есть критическое изменение в EF Core или PostgreSQL, которое влияет на то, как HashSet сериализуется/десериализуется для столбцов jsonb?
Как я могу правильно сохранить и запросить HashSet с помощью jsonb в обновленной среде?
Есть ли обходной путь или лучший способ избежать этого InvalidCastException?
Я пытался каким-то образом управлять сериализацией вручную:

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

builder
.Property(x => x.Property)
.HasColumnType("jsonb")
.HasDefaultValueSql("'[]'::jsonb")
.HasConversion(
v => JsonSerializer.Serialize(v, new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }),
v => JsonSerializer.Deserialize(v, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }) ?? new HashSet()
Но это не помогло.

Подробнее здесь: https://stackoverflow.com/questions/792 ... pgrading-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно сохранить HashSet с типом столбца jsonb в EF Core после обновления до .NET 9 и PostgreSQL 9.0.1.
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core 8 Web API/C#/Dapper/Postgresql Сохранение и обслуживание столбца JSONB, не касаясь столбца
    Anonymous » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Почему HashSet намного медленнее, чем HashSet?
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Почему HashSet намного медленнее, чем HashSet?
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Jsonb.fromJson не десериализует набор, созданный из строки JSON, созданной Jsonb.toJson(objectWithSet).
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

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