Объект vb.net сохраняется в базе данных

Как я могу сохранить объект, определенный пользователем vb.net, в базе данных sql. Я не пытаюсь воспроизвести свойства с помощью столбцов. Я имею в виду что-то вроде преобразования или кодирования моего объекта в массив байтов с последующим сохранением его в поле в базе данных. Например, когда вы сохраняете экземпляр объекта в сеансе, но мне нужна информация, чтобы сохраняться после текущего сеанса.


@ Орион Эдвардс

It's not a matter of stances. It's because one day, you will change your code. Then you will try de-serialize the old object, and YOUR PROGRAM WILL CRASH.

Моя программа не будет "АВАРИЙНО", она вызовет исключение. К счастью для меня, в .net есть целый набор классов, посвященных такому случаю. В это время я обновлю свои устаревшие данные и верну их в базу данных. В этом суть этого единственного поля (или позиции, в зависимости от обстоятельств).

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
4 680
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

Ответ принят как подходящий

Вы можете использовать сериализация - он позволяет хранить ваш объект как минимум в 3-х формах: двоичной (подходит для BLOB), XML (используйте преимущества типа данных XML MSSQL) или просто текст (хранить в varchar или текстовом столбце)

XmlSerializer или DataContractSerializer в .NET 3.x выполнят эту работу за вас.

Прежде чем вы пойдете по этой дороге к собственному безумию, вам следует взглянуть на это (или однажды повторить):

http://thedailywtf.com/Articles/The-Mythical-Business-Layer.aspx

Сохранять объекты в базе данных - не лучшая идея. Он убивает все хорошее, для чего предназначена база данных.

@aku, lomaxx и bdukes - ваши решения - это то, что я искал.

@ 1800 ИНФОРМАЦИЯ - хотя я ценю вашу позицию по этому поводу, это особый случай данных, которые я получаю от веб-сервиса, который обновляется только примерно раз в месяц. Мне не нужны данные, сохраняемые в форме db, потому что это то, для чего предназначен веб-сервис. Ниже приведен код, который я наконец-то приступил к работе.

Сериализовать

    #'res is my object to serialize
    Dim xml_serializer As System.Xml.Serialization.XmlSerializer
    Dim string_writer As New System.IO.StringWriter()
    xml_serializer = New System.Xml.Serialization.XmlSerializer(res.GetType)
    xml_serializer.Serialize(string_writer, res)

Десериализовать

    #'string_writer and xml_serializer from above
    Dim serialization As String = string_writer.ToString
    Dim string_reader As System.IO.StringReader
    string_reader = New System.IO.StringReader(serialization)
    Dim res2 As testsedie.EligibilityResponse
    res2 = xml_serializer.Deserialize(string_reader)

То, что вы хотите сделать, называется «сериализацией» вашего объекта, и .Net имеет несколько различных способов сделать это. Один из них - это класс XmlSerializer в пространстве имен System.Xml.Serialization.

Другой находится в пространстве имен System.Runtime.Serialization. Он поддерживает модуль форматирования SOAP, модуль форматирования двоичных файлов и базовый класс, от которого вы можете наследовать, все они реализуют общий интерфейс.

Для того, о чем вы говорите, предложенный ранее BinaryFormatter, вероятно, будет иметь лучшую производительность.

Поддерживаю @ 1800 Информация по этому
Сериализация объектов для долгосрочного хранения - плохая идея.

while i appreciate your stance on the matter, this is a special case of data that I get from a webservice that gets refreshed only about once a month.

Дело не в стойках. Это потому, что однажды вы измените свой код. Затем вы попробуете десериализовать старый объект, и ВАША ПРОГРАММА СРАБАТСЯ.

Если он дает сбой (или вызывает исключение), все, что у вас остается, - это набор двоичных данных, которые вы можете попробовать и просеять, чтобы воссоздать ваши объекты.

Если вы сохраняете только двоичный файл, почему бы просто не сохранить его прямо на диск. Вы также можете использовать что-то вроде xml, поскольку, как уже упоминалось, если вы измените определение объекта, вы не сможете десериализовать его без некоторой тяжелой работы.

Другие вопросы по теме