对象存数据库的几种方案比较
1、将每个属性用字段的方式存数据库,一个字,烦
2、如果属性不需要检索、排序等操作,可以将整个对象存数据库
方法:
先序列化,以byte[] 的形式将数据存储到数据库的二进制字段(varbinary(MAX))
读取的时候反序列化,再显式转换为对象
优点:性能好,占数据少
缺点:如果你更改了对象属性的话,以前存储的对象信息你就看不懂了,全是二进制
最佳方案,以xml的模式存储到数据库
2、如果属性不需要检索、排序等操作,可以将整个对象存数据库
方法:
先序列化,以byte[] 的形式将数据存储到数据库的二进制字段(varbinary(MAX))
读取的时候反序列化,再显式转换为对象
优点:性能好,占数据少
缺点:如果你更改了对象属性的话,以前存储的对象信息你就看不懂了,全是二进制
最佳方案,以xml的模式存储到数据库
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();
System.IO.MemoryStream mem = new System.IO.MemoryStream();
formatter.Serialize(mem, 对象名);
byte[] buffer = new byte[mem.Length];
mem.Read(buffer, 0, Convert.ToInt32(mem.Length));
string xml =System.Text.Encoding.UTF8.GetString(buffer);
System.IO.MemoryStream mem = new System.IO.MemoryStream();
formatter.Serialize(mem, 对象名);
byte[] buffer = new byte[mem.Length];
mem.Read(buffer, 0, Convert.ToInt32(mem.Length));
string xml =System.Text.Encoding.UTF8.GetString(buffer);