В моей модели предметной области у меня есть следующее свойство:
Код: Выделить всё
public HashSet Property { get; set; }
Однако, после обновления я столкнулся со следующей ошибкой:
Код: Выделить всё
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/базы данных: это работало без проблем в .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