У меня есть простой DAL, который состоит из объекта SalesEnquiry
, который включает в себя List<T>
объекта Vehicle
, который используется для обработки входящих запросов (XML) и записи их в БД. Пока все хорошо.
Однако я пишу другое приложение, которое дополнительно обрабатывает данные в этой БД, поэтому я хочу использовать те же объекты DAL для извлечения и манипулирования данными.
Вместо того, чтобы возвращать обычные наборы записей и повторять их, заполняя вручную каждое свойство объектов SalesEnquiry / Vehicle, я подумал, что могу вернуть данные из SQL Server в виде XML и десериализовать их. Я уже использую эту технику для обработки входящих данных.
Однако я не уверен, смогу ли я создать соответствующий XML в SQL Server или как я должен сделать это в два этапа.
Следующее извлечет запросы в виде XML:
Select EnquiryID as 'enquiry/enquiryid',
EnquiryNo as 'enquiry/enquiryno',
CompanyName as 'enquiry/company'
From Enquiries e
Where e.EnquiryID = 23
For XML PATH
И следующее извлечет связанные транспортные средства как XML:
Select VehicleID as 'vehicle/vehicleid',
VehicleReg as 'vehicle/vehiclereg'
From Vehicles v
Where v.EnquiryID= 23
For XML PATH
В результате я получаю следующий XML:
<?xml version="1.0" encoding="utf-8"?>
<enquiry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<enquiry_id>123</enquiry_no>
<enquiry_no>100004</enquiry_no>
<company>MyCompany</company>
<enquiry_no>100004</enquiry_no>
<vehicles>
<vehicle>
<vehicle_registration>ABC123</vehicle_registration>
</vehicle>
<vehicle>
<vehicle_registration>XYZ789</vehicle_registration>
</vehicle>
</vehicles>
</enquiry>
Можно ли создать это в SQL Server или вручную в DAL?
Обновление:
Исходя из предложений Шунти, я использую следующее:
Select enquiry.EnquiryID as enquiry_id, enquiry.EnquiryNo, enquiry.CompanyName, VehicleID as [vehicle.vehicle_id], VehicleReg as [vehicle.vehicle_registration]
From Enquiries as enquiry
inner join Vehicles on Vehicles.EnquiryID = enquiry.EnquiryID
Where enquiry.EnquiryID = 23
For XML AUTO, ELEMENTS
.. Я могу подобраться ближе, но я не совсем там:
<?xml version="1.0" encoding="utf-8"?>
<enquiry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<enquiry_id>123</enquiry_no>
<enquiry_no>100004</enquiry_no>
<company>MyCompany</company>
<enquiry_no>100004</enquiry_no>
<vehicle>
<vehicle_registration>ABC123</vehicle_registration>
</vehicle>
<vehicle>
<vehicle_registration>XYZ789</vehicle_registration>
</vehicle>
</enquiry>
Для успешной десериализации мне нужно, чтобы мои элементы <vehicle>
входили в родительский элемент <vehicles>
. Должен быть способ поощрить SQL создавать правильный XML ...