使用Entity Framework操作数据库中的序列化字段

时间:2016-04-13 17:50:44

标签: c# entity-framework serialization

使用Entity Framework是否可以从数据库反序列化列并在保存回数据库时重新序列化?

基本上我将XML序列化为数据库中的字节数组。我想创建一个ADO.NET实体数据模型,我想知道我是否可以在数据模型中将此字段反序列化为字符串,然后在我的更改完成之后重新序列化,然后再将其保存回数据库中。

1 个答案:

答案 0 :(得分:0)

这假设您将属性varbinary存储在数据库中。您可以拥有与您的类中的blob列匹配的byte[]属性,并公开一个属性或方法以从X(ML)Document数组中提取反序列化的byte对象。同样,使用属性setter或方法更新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)
         }
     } 

}