В настоящее время я работаю над созданием приложения, в котором пользователи могут определять различные способы направления фрагментов данных в различные технологии хранения.К ним относятся традиционные системы реляционных баз данных.
Мы хотели бы предоставить обратную связь пользователям, если способ их настройки не работает с определенной схемой базы данных, т.е. если типы столбцов не совпадают.
Я искал надежный, независимый от поставщика способ получения типов данных таблицы базы данных, в идеале включая типы CLR, с которыми они сопоставляются.
До сих пор я изо всех сил пытался найти что-нибудьдаже отдаленно приличный.Большая часть решений, на которые я наткнулся, не зависит от поставщика, и большая часть инструментов, касающихся технологий баз данных, включенных в .NET (Core), специфична для SQL Server.
Наиболее популярным способом, по-видимому, является GetSchema
метод для IDbConnection
объекта, но этот также пронизан деталями, специфичными для реализации, и не дает очень приятного в использовании результата.Я был в состоянии получить текстовые представления для каждого из типов, и для Postgres, например, самое близкое, что я пришел, - это реально читаемые описания типов.VARCHAR
отображался как «символьная строка переменной длины», которую трудно проанализировать.
Большинство библиотек взаимодействия с базой данных для .NET (Core) абстрагируют такие примитивы, как DataSet, DataTable, DataReader и т. Д., И обычно напрямуюсопоставление с объектами, тем самым исключая любое использование, которое я мог бы использовать для них.
Какой самый простой способ получить обзор схемы таблицы?
Для ясности, мы ищемсейчас поддерживаются следующие технологии баз данных:
- SQL Server
- PostgreSQL
- MySQL / MariaDB
- SQLite
- Oracle RDMBS
Спасибо!