2011-01-19 17 views
4

クラスをフラットファイルに簡単にシリアライズすることはできますが、クラスをデータベースにシリアライズしたい場合、どうすればよいでしょうか、それでどうすればDBからデータをデシリアライズできますか授業へ。 C#でサンプルコードを入力してください。 BLOB列、またはXML列へのネットのデータ接点\ XMLの\データ接点を使用してバイナリシリアルを使用してファイルシステムの代わりにクラスをデータベースにシリアライズする方法#

おかげ

+1

あなたと呼ばれる技術を使用して、ストリーム内の列の値を読みます任意のストリームをシリアライズ/デシリアライズすることができます。 fバイト - ファイルまたはデータベースに保存できます(Sql Serverのvarbinaryカラム、oracleのblob)。 – VinayC

+1

適切なデータベースレイアウトを作成し、それをC#コードに変換して、それ以外の方法で変換する方がよいでしょう。まともなORマッパーを使用するか、タイプデータセット/ linq2sqlを作成してください。 – CodingBarfield

答えて

8

他と同様に、バイナリシリアル化を使用してメモリストリーム内のByte []配列を取得し、次にBlob/image型のデータベースに列を作成してバイト配列を格納することができます。

裏読みながら、あなただけ戻って、デシリアライゼーション

シリアライズ

BinaryFormatter bf = new BinaryFormatter(); 

     List<SearchFilterDetails> _list = QueryFilterDetails.ToList<SearchFilterDetails>(); 

     using (MemoryStream ms = new MemoryStream()) 
     { 
      bf.Serialize(ms, _list); 
      return ms.GetBuffer(); 
     } 

デシリアライズ

private void DeSerilizeQueryFilters(byte[] items) 
    { 
     BinaryFormatter bf = new BinaryFormatter(); 

     List<SearchFilterDetails> _list = new List<SearchFilterDetails>(); 

     try 
     { 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       ms.Write(items, 0, items.Length); 
       ms.Position = 0; 

       _list = bf.Deserialize(ms) as List<SearchFilterDetails>; 
      } 

      foreach (SearchFilterDetails mobj in _list) 
      { 
       QueryFilterDetails.Add(mobj); 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
1

:バイナリの例は@Saurabhによって既に与えられています。 データ契約の例Peter Ritchie's blogによって提供されます。

1

オブジェクトをシリアライズするときは、多くの場合ストリームに対して行われます。あなたは、メモリストリームにシリアル化してから、バイトを読み込んでデータベースに格納することができます。

現在、どのシリアル化コードをお持ちですか?完全なコードを与えるよりも、修正する方法を教えておく方がいいでしょう。

1

クラスをそのまま(out of the box)バイナリ形式またはXMLにシリアル化できます。
最初のケースではbyte[]、次に2番目の場合はstringとなります。
データベースに永続化したい場合は、データベースに送信する必要のある他のバイト配列または文字列(データベースがネイティブにサポートしている場合はXML)として扱います。

2

Thomas、アプリケーションでどのようなデータアクセスロジックを使用していますか?

データベースと対話してオブジェクトを格納/取得する方法をお探しの場合は、Entity FrameworkまたはNHibernateを参照することもできます。このようなORMを使用すると、オブジェクト/エンティティがロードまたは保存される方法ではありません。

1

オブジェクトをXMLにシリアル化します。そのXMLブロブからデータセットを読み込ませてみましょう。 データセット内の各テーブル/行に対してDB作成文を作成します。

関連する問題