2008-09-02 15 views
1

vb.netユーザー定義オブジェクトをSQLデータベースに格納するにはどうすればよいですか。私は列でプロパティを複製しようとしていません。私はオブジェクトをバイト配列に変換またはエンコードして、dbのフィールドに格納する行に沿って何かを意味します。セッションのオブジェクトのインスタンスを格納する場合と同様ですが、現在のセッションを過ぎても保持するためには情報が必要です。vb.netオブジェクトがデータベースに保持されています


@Orionエドワーズ

それはスタンスの問題ではありません。ある日、コードを変更する予定だからです。次に、古いオブジェクトをデシリアライズして、あなたのプログラムがクラッシュするようにします。

私のプログラムは「クラッシュ」しないため、例外がスローされます。私のためにラッキー。ネットは、そのような機会に捧げられたクラス全体を持っています。私は古いデータを更新し、dbに戻します。それがこの1つの分野のポイントです(場合によってはスタンス)。

答えて

5

serializationを使用すると、バイナリ(BLOBに適しています)、XML(MSSQLのXMLデータ型を利用する)、プレーンテキスト(varcharまたはテキスト列に格納)の3つの形式でオブジェクトを格納できます。 )

2

BinaryFormatterクラスを使用して、オブジェクトをバイナリ形式にシリアル化し、結果の文字列をデータベースに保存できます。

1

XmlSerializerまたは.net 3.xのDataContractSerializerが処理を行います。

3

あなたがあなた自身の最終的な狂気に向けたこの道を向かう前に、あなたはこれを見て取る必要があります(または1日それを繰り返す):データベース内のオブジェクトを永続化

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

は良いアイデアではありません。それは、データベースが行うように設計されたすべての良いことを殺します。

0

@aku、lomaxx、bdukes - あなたの解決策は私が探していたものです。

@ 1800お知らせ - 私はあなたの立場に感謝していますが、これは1ヶ月に1回だけリフレッシュされるWebサービスから得られるデータの特殊なケースです。私はdbフォームで永続化されたデータを必要としません。なぜなら、Webサービスが何であるかということです。以下は、私が最終的に働かなければならないコードです。

Serializeを

#'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) 
0

は、あなたのオブジェクトを "シリアル化" と呼ばれ、.NETはそれについて移動するには、いくつかの異なる方法があります。 1つはSystem.Xml.Serialization名前空間のXmlSerializerクラスです。

もう1つは、System.Runtime.Serialization名前空間にあります。これは、SOAPフォーマッタ、バイナリフォーマッタ、およびそこから継承できる基本クラスをサポートしています。これらのすべてが共通のインタフェースを実装しています。

あなたが話していることについては、以前に提案したBinaryFormatterがおそらく最高のパフォーマンスを持つでしょう。

0

私はこの情報を支持しています。
長期保存のためのオブジェクトのシリアル化することは良いアイデアになることはありません

私はこの問題に関するあなたの姿勢を高く評価しながら、これは私が月に約1回だけリフレッシュしますWebサービスから取得したデータの特殊なケースであります。

これはスタンスの問題ではありません。ある日、コードを変更する予定だからです。次に、古いオブジェクトをデシリアライズして、あなたのプログラムがクラッシュするようにします。

0

クラッシュした場合(または例外をスローした場合)、残っているのは、オブジェクトを再作成するためのバイナリデータです。

バイナリを永続化するのは、ディスクにまっすぐに保存するだけではない理由です。前述したように、xmlのようなものを使用して見たいと思うかもしれません。オブジェクト定義を変更すると、何らかの労力をかけなければそれをunserializeできないかもしれません。

関連する問題