как вставить данные в БД как сериализованный объект - PullRequest
2 голосов
/ 04 августа 2010

Мой основной вопрос: как вставить данные в БД как сериализованный объект и как извлечь и использовать их тогда ... любое предложение !!?
например:

{id:1, userId:1, type:PHOTO, time:2008-10-15 12:00:00, data:{photoId:2089, photoName:A trip to the beach}}

, как вы видите, как я могу вставить данные в столбец Data и затем использовать их!?
другой вопрос: если я сохранюphotoName внутри Data вместо использования JOINS и получения имени из его таблицы (photos) в соответствии с Id То есть не будет реализовано последнее обновление photoName (верно!?), Кроме того, что я не смогу установить связь между фотографиями таблицы и текущей таблицей - (Id=> photoId) - если бы я хранил такие данные ... так что отчасти проблема в том, что я точно не знаю, какая информация будет храниться в столбце Data Так что яневозможно настроить отдельный столбец для каждого типа этой информации ...

Ответы [ 4 ]

1 голос
/ 04 августа 2010

Если вы не хотите хранить данные реляционным способом, вам лучше не использовать реляционную базу данных.Несколько объектных баз данных говорят на JSON и могут довольно легко справиться с такой проблемой.

1 голос
/ 04 августа 2010

Обычно я вижу здесь два варианта.

  1. Вы можете сохранить сериализованный объект XML в базу данных и просто использовать стандартную сериализацию XML, вот пример , которые вы можете адаптировать под свои нужды.

  2. Вы можете создать истинную таблицу для этого объекта и делать вещи «стандартным» способом.

С опцией 1, фильтрация / объединение / поиск информации в столбце «данные», хотя она все еще технически возможна, я НЕ рекомендую, и, по моему мнению, это больше подходит для статического процесса хранения.Что-то вроде объекта пользовательских настроек или какого-то другого элемента, который ОЧЕНЬ маловероятен для внутреннего запроса.

При использовании опции 2 да, вам придется выполнять больше работы, но если вы правильно определите объект,это будет возможно.

Разъяснение Что касается моего примера в № 1 выше.Вы бы записали в поток памяти и т. Д. Для сериализации, а не в файл.

0 голосов
/ 04 августа 2010

По поводу сохранения объекта в вашей базе данных; вы можете сериализовать ваш объект в xml , используя XDocument.ToString() и , сохранить его в базе данных столбец типа данных xml.

cmd.Parameters.AddWithValue("@Value", xmldoc.ToString());

Оформить заказ, Работа с типом данных XML в SQL Server

0 голосов
/ 04 августа 2010

Вы можете сохранить его как строку JSON и использовать JSONSerializer из JSON lib

http://json -lib.sourceforge.net / apidocs / index.html

для преобразования javabean в строку / объект json и наоборот.

Обычно мы используем это для хранения конфигурации, где ни один из параметров конфигурации неизвестен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...