如何使用Linq to SQL将对象序列化并将对象保存为Xml

时间:2009-12-01 09:48:49

标签: c# linq-to-sql xml-serialization

我使用FileStream将对象序列化为Xml并保存到磁盘

Stream str = new FileStream(@"serializedstate.xml", FileMode.OpenOrCreate)
XmlSerializer x = new XmlSerializer(typeof(GridState));
x.Serialize(str, new GridState
        {
            GridName= txtGridName.Text,
            GridColumns = GetGridColumnStates()
        });

这很好用,并且在磁盘上生成Xml文件。如何使用Linq to SQL将序列化的对象作为Xml保存到Sql Server 2008数据库的XML列中?以及如何从数据库反序列化相同的内容?

2 个答案:

答案 0 :(得分:7)

序列化为XElement

        XmlSerializer x = new XmlSerializer(typeof(GridState));
        XDocument doc = new XDocument();

        using (XmlWriter xw = doc.CreateWriter())
        {
            x.Serialize(xw, new GridState
                {
                    GridName= txtGridName.Text,
                    GridColumns = GetGridColumnStates()
                });
            xw.Close();
        }

        XElement el = doc.Root;

反序列化

        using (XmlReader xr = el.CreateReader())
        {
            GridState myDeserializedObject = x.Deserialize(xr) as GridState;
            xr.Close();
        }

答案 1 :(得分:0)

在sql中你必须有colum类型的XML,而在linq中,Colum的类型必须是XElement,而不是你可以操作throw Linq。