Сохранить строку как столбец jsonb с помощью npgsql - PullRequest
0 голосов
/ 30 мая 2020

У меня следующая модель

public class Guardian
    {
        public int id { get; set; }
        public string username { get; set; }
        public string email { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string gender { get; set ;}
        public string address { get; set; }

        public string Questions;

        public IList<Urgency> Urgencies { get; set; } = new List<Urgency>();
    }

И эта строка кода в моем AppDbContext: DbContext

builder.Entity<Guardian>().Property(d => d.Questions).HasColumnType(NpgsqlDbType.Jsonb);

Я хочу, чтобы поле строки вопросов сохранялось как тип JsonB на postgreSQL база данных. Я получаю эту ошибку:

Argument 2: cannot convert from 'NpgsqlTypes.NpgsqlDbType' to 'string'

Что совершенно логично, но я не знаю, как мне к этому подойти. Я провел исследование, но, похоже, ничто не нацелено на мою конкретную ситуацию. Буду признателен за совет.

1 Ответ

2 голосов
/ 30 мая 2020

HasColumnType - это общий метод EF Core - принимает имя типа базы данных в виде строки (например, строку jsonb), а не Npg sql -specifi c NpgsqlDbType.Enum. Вам нужно просто изменить свой код следующим образом:

builder.Entity<Guardian>().Property(d => d.Questions).HasColumnType("jsonb");

См. Документацию поставщика Npg sql EF Core для получения этой и другой информации о сопоставлении JSON.

...