我有簡單的DAL,它由一個SalesEnquiry
對象,其中包括一個Vehicle
對象,它是用來處理傳入的查詢(XML)的List<T>
,並把它們寫到數據庫。到現在爲止還挺好。填充母+子對象
但是,我正在編寫另一個應用程序,以進一步處理此數據庫中的數據,所以我想使用這些相同的DAL對象來檢索和操作數據。
而不是返回傳統的記錄集並遍歷它們,手動填充SalesEnquiry/Vehicle對象的每個屬性,我認爲我可以將數據從SQL Server作爲XML返回並對其進行反序列化。我已經使用這種技術來處理傳入的數據。
但是,我不確定是否/如何在SQL Server中構建適當的XML,或者如果我必須分兩個階段來完成。
下面將提取查詢作爲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中手動執行此操作?
更新:
從Shunty的建議繼,我使用了以下內容:
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 ...
我可以吻你......但我不會。:) 我看了Root(),但可以弄清楚如何使用它 - 子查詢不會發生在我身上。謝謝。 – CJM 2010-08-11 12:06:04