System.ArgumentException: 'Тип значения имеет несоответствие типу столбца. Не удалось сохранить <True>в столбце BitTable_bit_col.Ожидаемый тип - BitArray. ' - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть таблица в PostgreSQL, которая состоит из столбца типа данных BIT.Я просто использую команду select, чтобы получить результаты для моей таблицы, используя приложение C #.

Когда я использую версию Npgsql 3.1.10 , тогда операция загрузки DataTable работает нормально.

Но если я использую Npgsql версии 3.2.0 или выше, загрузка DataTable завершится с ошибкой:

System.ArgumentException: 'Тип значения имеетнесоответствие с типом столбца. Не удалось сохранить в столбце BitTable_bit_col.Ожидаемый тип - BitArray. '

Фрагмент кода приведен ниже.

            NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;User Id=postgres;Password=root;Database=postgres;");
            conn.Open();

            var datatable = new DataTable();

            using (var command = new NpgsqlCommand("SELECT \"BitTable\".\"id\" AS \"BitTable_id\"   ,\"BitTable\".\"bit_col\" AS \"BitTable_bit_col\"   ,\"BitTable\".\"boolean_col\" AS \"BitTable_boolean_col\" FROM \"BitTable\" AS \"BitTable\" limit 100", conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    datatable.Load(reader);
                }
            }
            conn.Close();

Я подозреваю, что проблема в самом DataTable, к удивлению, он не может правильно читать данные.(В версии 3.1.10 мой битовый столбец типа данных рассматривается как логическое значение, но в версии 3.2.0 мой битовый столбец типа данных рассматривается как BitArray. Итак, эта проблема возникает)

Пожалуйста, дайте мне какое-либо решение для решения этой проблемыв последней версии Npgsql.

...