Некоторая часть моего кода вставляет класс Entity в БД, где разделы столбцов имеют тип JsonB
Код: Выделить всё
public sealed class Entity
{
public int Version { get; set; }
public IReadOnlyCollection
? Partitions { get; set; } = new List().AsReadOnly();
}
Код: Выделить всё
public sealed class Partition
{
public string Name { get; set; } = string.Empty;
public IReadOnlyCollection Categories { get; set; } = new List().AsReadOnly();
}
Код: Выделить всё
await _dbContext.AddAsync(Entity, cancellationToken);
(Ссылка на описание)
И здесь возникает основная проблема.
Чтобы создать экземпляр NpgsqlDataSourceBuilder, строку подключения необходимо поместить в конструктор.
Моя строка подключения выглядит так:
Код: Выделить всё
Host=host-1:port,host-2:port;Target Session Attributes=primary;Database=db_name;Password=password;
Код: Выделить всё
System.InvalidOperationException When creating a multi-host data source, TargetSessionAttributes cannot be specified. Create without TargetSessionAttributes, and then obtain DataSource wrappers from it. Consult the docs for more information. Я пытался вставить Entity с помощью LinqToDB, но обнаружил ту же проблему с включением DynamicJson в NpgsqlDataSourceBuilder.
Кроме того, я пытался проанализировать строку подключения с помощью DbConnectionStringBuilder(), а затем создать новую строку без TargetSessionAttributes. Но в некоторых случаях это кажется плохим решением.
Итак, мой вопрос:
Есть ли способ включить DynamicJson в NpgsqlDataSourceBuilder с моей строкой подключения или вставить мой класс C# в столбец типа JsonB в БД?
Я буду благодарен за любой совет. Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-npgsql
Мобильная версия