Womens Ink Adidas Originals Legend Sweatshirt D9eE2HYWI
Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA

Pantalon Homme Sec Noir Nike Équipe D'entrainement Vente QdBeCoWxr
Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA English (en) Français (fr) Español (es) Italiano (it) Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA Deutsch (de) русский (ru) 한국어 (ko)Advance Nike Homme Grisanthraciteblack Survêtement 15 sxrtdCQh 日本語 (ja) 中文简体 (zh-CN) 中文繁體 (zh-TW)
Block Nike Nike Trui Colour Colour Block Trui Block Nike Sweaters Trui Sweaters Colour Yf67ygvb
Garden Femme Vachette Cuir Nubuck Col Aviateur Rose Blouson ulc3JFKT1

Question

J'interroge des données avec des ensembles de résultats parent / enfant à l'aide d'Entity Framework et je souhaite exporter ces données vers un document XML.

Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA
												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);
												Shirts Verde Sneaker Nero Casual Giallo Abbigliamento Puma Lines T VSqpGUzM

Cela fonctionne bien, sauf qu'il ne fait que sérialiser le parent sans inclure les enregistrements enfants associés dans le XML. Comment puis-je amener les enfants à sérialiser également?

J'ai également essayé d'utiliser le code généré par POCO et les collections enfants tentent d'être sérialisées, à l'exception qu'il s'agisse d'ICollections qui ne peuvent pas être sérialisées.

Impossible de sérialiser le membre DataSnapshots.Agreement.AgreementItems de type System.Collections.Generic.Gollic.ICollection`1 [[DataSnapshots.AgreementItem, DataSnapshots, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null]] car il s'agit d'une interface.

Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA
Camel Imitation Mouton Manteau Peau De 80mvnwN

Réponse populaire

La sérialisation XML se comporte différemment de la sérialisation binaire et de la sérialisation du contrat de données lors de l'utilisation d'entités Entity Framework. Ce dernier sérialisera tous les objets liés chargés dans le graphe d'objets, mais pas la sérialisation XML. Vous devrez donc utiliser un DataContractSerializer :

												var agreement = storeops.Agreements.SingleOrDefault(a => a.AgreementNumber == AgreementTextBox.Text); // make sure any relations are loaded  using (XmlWriter writer = XmlWriter.Create("Agreement.xml")) {     DataContractSerializer serializer = new DataContractSerializer(agreement.GetType());     serializer.WriteObject(writer, agreement); }
												

En outre, Entity Framework utilise le chargement différé par défaut pour 1: Plusieurs relations et si les objets référencés n’ont pas déjà été chargés lors de la sérialisation, les seules clés que vous obtiendrez sont les clés qui y font référence. Vous devez explicitement charger les entités associées en appelant agreement.Children.Load() ou en utilisant .Include("Children") dans votre requête ( Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA "Children" étant le nom de la collection d'entités associées).


Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA
Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA

Prime Library

Performance

Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA

Expression Evaluator


More Projects...
Sous licence: CC-BY-SA Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA
Sous licence: Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA CC-BY-SA with attribution
Non affilié à Stack Overflow Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA
Est-ce KB légal? Oui, apprenez pourquoi
Pantalon Nike Sportswear Tech Homme Pour Vert Fleece Survêtement De jL54RA