有没有办法从实体转储中获取XML文档而不是HTML?

时间:2012-06-04 14:28:33

标签: xml linqpad

我喜欢Linqpad。有没有办法从实体转储中获取XML文档而不是HTML?

我想使用LinqPad.Util在LinqToSql Changeset上创建XML文档而不是HTML文档。我尝试了许多方法来序列化变更集失败。 Linqpad util CreateXhtmlWriter工作得很好,但我更喜欢它是一个XML文档。关于如何快速做到这一点的任何想法?

1 个答案:

答案 0 :(得分:2)

目前LINQPad中没有任何内容可以将任意对象图转储为XML。但是,您应该能够使用扩展方法轻松完成您所描述的内容。转到LINQPad中的 My Extensions 并编写如下方法:

public static XElement ToXml (this ChangeSet cs)
{
    return new XElement ("ChangeSet",
        new XElement ("Inserts", cs.Inserts.Select (e => EntityToXElement (e))),
        new XElement ("Updates", cs.Updates.Select (e => EntityToXElement (e))),
        new XElement ("Deletes", cs.Deletes.Select (e => EntityToXElement (e))));
}

static XElement EntityToXElement (object o)
{
    return new XElement (
        o.GetType().Name,
        o.GetType().GetFields ().Select (f => new XElement (f.Name, f.GetValue (o))));
}

然后,在任何查询中,您都可以:

GetChangeSet().ToXml().Dump();