2016-04-13 8 views
0

Entity Frameworkを使用すると、データベースから列を逆シリアル化し、データベースに保存し直した後に再シリアル化することは可能ですか?Entity Frameworkを使用してデータベースのシリアル化フィールドを操作する

私は基本的にデータベースのバイト配列にシリアル化されたXMLを持っています。私はADO.NETエンティティデータモデルを作成したいと思いますが、どういうわけか、このフィールドをデータモデル内で直列化して文字列にしてから、変更を行った後に再度シリアル化してから、データベース。

答えて

0

これは、データベースにvarbinaryというプロパティを格納していることを前提としています。クラスのBLOB列に一致するbyte[]プロパティを持つことができ、byte配列から逆シリアル化されたX(ML)Documentオブジェクトをフェッチするプロパティまたはメソッドを公開します。同様に、プロパティーセッターまたはメソッドを使用してbyte[]プロパティーを更新すると、データベース内の文書を更新できます。

例、参考のために、エラー処理が含まれていない、など

class MyData 
{ 
    public byte[] XmlData { get; set; } 

    [NotMapped] 
    public XmlDocument XmlDocument 
    { 
     get 
     { 
      var doc = new XmlDocument(); 
      var ms = new MemoryStream(this.XmlData); 
      doc.Load(ms); 
      return doc; 
     } 
     set 
     { 
      this.XmlData = Encoding.Default.GetBytes(value.OuterXml) 
     } 
    } 

} 
+0

SQL Serverでカラムのデータ型がイメージです。 EntityModelを作成すると、EntityFrameworkはデフォルトでedmxのTypeをBinaryに設定します。 –

+0

したがって、edmxを作成した後、プロパティ見出しを右クリックし、[新規追加]と[次のオプションを取得]にカーソルを合わせると、スカラ、ナビゲーション、または複合プロパティが表示されます。これらのいずれかを選択するか、ソリューションエクスプローラにアクセスしてedmxファイルを展開し、.ttファイルまたは.csファイルのどこかに新しいプロパティを追加することをお勧めしますか? –

+0

生成されるクラスはPartialである必要があります。そのため、別の部分定義を追加して同じクラスに追加できるはずです。 – Bas

関連する問題