我查詢與父/子結果集使用實體框架的數據,我想將這些數據導出到XML文檔。序列化實體框架對象與兒童到XML文件
var agreement = storeops.Agreements.SingleOrDefault(a => a.AgreementNumber == AgreementTextBox.Text);
XmlSerializer serializer = new XmlSerializer(agreement.GetType());
XmlWriter writer = XmlWriter.Create("Agreement.xml");
serializer.Serialize(writer, agreement);
這個效果很好,除了它只在沒有在XML中包含相關子記錄的情況下序列化父文件。我怎樣才能讓孩子們序列化呢?
我也嘗試使用POCO生成的代碼和子集合嘗試被序列化,除了它們是不能被序列化的ICollections。
無法序列化System.Collections.Generic.ICollection`1 [[DataSnapshots.AgreementItem,DataSnapshots,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]類型的成員DataSnapshots.Agreement.AgreementItems,因爲它是接口。
我實際上得到的孩子,因爲我的數量大於0,但由於某些原因,他們沒有在XmlSerializer序列化。我猜這是因爲子對象不是一個真正的集合類,而是一個EntityCollection,它不能從任何Collection類繼承。 – 2011-06-05 02:19:04
'EntityCollection'被定義爲'public sealed class EntityCollection:RelatedEnd,ICollection ,IEnumerable ,IEnumerable,IListSource',所以它肯定是*集合。 –
2011-06-05 04:34:15
好的,我明白爲什麼子集合沒有被序列化到XML文檔中?除了孩子以外,所有其他的屬性都在那兒加載。我之所以說EntityCollection不像其他的collecions行爲是因爲我不能使用[]引用孩子。我想因爲這個,孩子們沒有被序列化。 – 2011-06-05 15:51:04