Включение DynamicJson в NpgSqlC#

Место общения программистов C#
Ответить
Anonymous
 Включение DynamicJson в NpgSql

Сообщение Anonymous »

Несколько дней назад я обновил версию .NET в своем проекте до 8. Также пакет Npgsql.EntityFrameworkCore.PostgreSQL был обновлен до версии 8.0.10.
Некоторая часть моего кода вставляет класс 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();
}
Итак, теперь, когда я пытаюсь вставить Entity в базу данных с помощью npgsql

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

await _dbContext.AddAsync(Entity, cancellationToken);
У меня возникла ошибка, в которой говорится, что мне нужно включить DynamicJson в NpgsqlDataSourceBuilder
(Ссылка на описание)
И здесь возникает основная проблема.
Чтобы создать экземпляр NpgsqlDataSourceBuilder, строку подключения необходимо поместить в конструктор.
Моя строка подключения выглядит так:

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

Host=host-1:port,host-2:port;Target Session Attributes=primary;Database=db_name;Password=password;
Но новый NpgsqlDataSourceBuilder(connectionString).EnableDynamicJson().Build() с такой строкой подключения возвращает ошибку

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

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
Ответить

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

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

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

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

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