Я занимаюсь разработкой существующей базы данных Postgres с Npgsql и EF Core. Вещи кажутся, по крайней мере, в основном на месте, за исключением того, что я заметил, что ни один из моих столбцов диапазона диапазона не присутствует. Это не слишком удивительно, учитывая, что у C# нет типа данных, которое было бы естественно аналогичным.Тип диапазона с Npgsql
Кажется, что есть какая-то поддержка, основанная на этой теме https://github.com/npgsql/npgsql/issues/126, и примечания здесь http://www.npgsql.org/dev/types.html, но до сих пор я не мог найти никаких подробностей о том, как реализовать что-либо.
Редактировать: Я нашел тип NpgsqlRange, но получаю ошибку 'NpgsqlRange<int>' which is not supported by current database provider
. У меня есть встроенный модулятор с .HasColumnType("int4range")
.
Хорошо, спасибо за ответ. В то же время, какое лучшее решение? Есть ли способ, которым я могу использовать значение defaultvalue или computedvalue или что-то подобное, чтобы построить значение диапазона при записи в базу данных? Мне действительно не нужно читать какие-либо типы диапазонов, мне просто нужно их написать. постскриптум Я также заметил, что мои столбцы перечисления отсутствуют, но, надеюсь, я просто смогу реализовать их как строки. – user3747260
У вас всегда есть возможность управлять диапазонами вне EF Core, то есть с использованием необработанного SQL. Если вы используете EF Core для создания своих таблиц, вы можете добавить SQL в свои миграции, чтобы изменить таблицу и добавить столбец диапазона, а затем вы можете просто использовать SQL в режиме экономии времени для заполнения диапазона. Энумы, к сожалению, еще менее поддерживаются, и все выглядит не так хорошо, поскольку требуются значительные изменения в ядре EF Core (см. Https://github.com/npgsql/Npgsql.EntityFrameworkCore.PostgreSQL/issues/27) –
Таблица с моим типом диапазона находится в середине иерархии наследования и имеет внешний ключ, который относится к таблицам выше и ниже его в иерархии. Есть ли лучший способ написать данные диапазона, кроме запроса после 'SaveChanges()', чтобы получить список всех идентификаторов, а затем итерации по списку и индивидуального выполнения операторов обновления, где id = id? К сожалению, я довольно новичок в работе с базами данных в .NET. – user3747260