У меня есть структура базы данных, заполненная данными, которые я пытаюсь записать в файл 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 различных таблиц, все они связаны с таблицей поставщиков, некоторые из которых могут опускаться на 2 или 3 уровня.,В настоящее время существует около 40 000 провайдеров, и выполнение кода занимает около 1,5 часов.
У меня есть две проблемы с этим кодом в его текущем состоянии:
- Я не вижуили сообщать о любом прогрессе, потому что вся обработка связана с одним гигантским запросом LINQ.Даже если я не смогу сделать это быстрее, я бы хотел знать, сколько мне еще ждать.Моя первая версия этого кода содержала циклы For вместо запросов, поэтому я мог отображать прогресс, но это занимало больше времени.
- Очевидно, я бы хотел значительно ускорить это.Похоже, что должен быть более простой способ преобразования данных в файл XML, тем более что структура базы данных была изначально создана из XSD.
Любые идеи о том, что я могу сделать, чтобыулучшить это?