В какой-то момент в моем коде я создаю словарь типа Dictionary<string, string>
, и мне интересно, что лучший способ сохранить его в базе данных с точки зрения преобразования его в строку, а затем обратно в словарь.
Спасибо.
В какой-то момент в моем коде я создаю словарь типа Dictionary<string, string>
, и мне интересно, что лучший способ сохранить его в базе данных с точки зрения преобразования его в строку, а затем обратно в словарь.
Спасибо.
Если вы действительно хотите сохранить полный словарь в виде одной строки, вы можете сериализовать словарь в JSON (или XML) и сохранить результат в базе данных.
Здесь есть несколько вариантов.
Вы можете перейти по пути нормализации и использовать отдельную таблицу с парой ключей/значений столбцов.
Некоторые базы данных предоставляют вам тип данных, который аналогичен тому, что вам нужно. PostgreSQL имеет тип hstore
, где вы можете сохранить любые пары ключ-значение, а MS SQL имеет тип данных XML, который также может использоваться с некоторым простым массированием ваших данных перед вставкой.
Компромиссы заключаются в следующем:
Базы данных NoSQL, которые " ориентированы на документы, предназначены именно для этого типа хранилища. В зависимости от того, что вы делаете, вы можете посмотреть некоторые варианты. MongoDB - популярный выбор.
Правильный выбор зависит от шаблонов запросов для данных и других нефункциональных проблем, таких как поддержка базы данных и т.д. Если вы расширите функциональность, которую вам нужно реализовать, я могу расширить свой ответ.
У вас есть несколько вариантов. Вы можете сериализовать объект в XML, или JSON, как указано в @M4N. Вы также можете создать таблицу с по меньшей мере двумя столбцами: один для ключа и один для значения.
Это действительно зависит от того, как выглядят модели вашего домена и как вам нужно управлять данными. Если значения словаря или клавиши меняются (переименование IE, коррекция и т.д.) И должны отражаться на многих объектах, зависящих от данных, то создание таблицы поиска для этой карты непосредственно для словаря может быть лучше. В противном случае сериализация данных будет одной из наиболее эффективных параметров.