2010-08-23 80 views
1

我有一個數據庫結構充滿了我試圖寫入XML文件的數據。下面是VB代碼的結構方式的味道:加速將數據庫結構複製到XML的代碼

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個不同的表,都綁回商臺,其中有一些可能去2或3級了。目前大約有40,000個提供商,代碼大約需要1.5個小時才能完成。

我有兩個問題與此代碼,因爲它目前爲:

  1. 我無法看到或報告任何進展,因爲處理是所有依賴於一個巨大的LINQ查詢。即使我不能做得更快,我想知道我還有多久需要等待。我的第一個版本的代碼有For循環而不是查詢,所以我可以顯示進度,但是它花費的時間更長。
  2. 顯然我想加快這一點。似乎應該有一種更簡單的方法將數據轉換爲XML文件,特別是因爲數據庫結構首先是從XSD創建的。

關於我能做些什麼來改善這一點的任何想法?

回答

1

我會嘗試編寫一個查詢(或者更多的查詢),爲您提供所有數據並使用這些數據來構建xml文檔。現在,您的SQL查詢綁定到xml文檔的結構,但可能會有更高效的查詢返回相同的數據,但速度會更快。