加速将数据库结构复制到XML的代码

时间:2010-08-23 14:30:11

标签: xml vb.net linq-to-sql

我有一个数据库结构,其中填充了我正在尝试写入XML文件的数据。这里介绍了VB代码的结构:

Dim xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance")

Return _
    New XElement( _
        "providers", _
        New XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), _
        New XAttribute(xsi + "noNamespaceSchemaLocation", "\schema\provider_schema.xsd"), _
        From p In context.providers _
        Select New XElement( _
            "provider", _
            New XElement("external_provider_id", p.external_provider_id), _
            New XElement( _
                "demographic", _
                New XElement("record_type_id", p.demographics.Single.record_type_id), _
                New XElement("provider_number", p.demographics.Single.provider_number), _
                ...
                New XElement("provider_type_id", p.demographics.Single.provider_type_id)), _
            New XElement( _
                "provider_specialties", _
                From s In p.provider_specialties _
                Select New XElement( _
                    "provider_specialty", _
                    New XElement("external_provider_specialty_id", s.external_provider_specialty_id), _
                    New XElement("record_type_id", s.record_type_id), _
                    New XElement("effective_date", s.effective_date.TruCareFormat), _
                    ...

该结构从大约15个不同的表中提取数据,所有表都绑定到Provider表,其中一些可能会降低2或3个级别。目前大约有40,000个提供商,代码大约需要1.5个小时才能完成。

我目前对此代码有两个问题:

  1. 我看不到或报告任何进展,因为处理都与一个巨大的LINQ查询相关联。即使我不能加快速度,我也想知道我还要等多久。我的第一个版本的代码有For循环而不是查询,所以我可以显示进度,但它花了更长的时间。
  2. 显然我想加快这个速度。似乎应该有一种更简单的方法将数据转换为XML文件,尤其是因为数据库结构首先是从XSD创建的。
  3. 关于我可以采取哪些措施来改善这一点?

1 个答案:

答案 0 :(得分:1)

我会尝试编写一个查询(或者更多查询),它会为您提供所有数据并使用此数据构建xml文档。现在,您的SQL查询绑定到xml文档的结构,但可能会有更高效的查询返回相同的数据,但速度要快得多。