2010-04-08 4 views
0

J'ai rencontré une erreur lors de la tentative de sérialisation d'un entitySet linq. Pour contourner cela, j'ai converti l'entitySet en une liste. Le problème que j'ai rencontré maintenant est que ses ensembles d'entités enfants ne convertissent pas en une liste et quand j'essaie de sérialiser le parent, ils lancent maintenant une erreur. Est-ce que quelqu'un sait d'une manière de convertir un entitySet de linq ET c'est des enfants aux listes?Comment convertir linq entitySet AND CHILDREN en listes?

p.s. Je suis nouveau à linq, donc si cela n'a pas de sens faites le moi savoir

Répondre

1

Tout projet sur les nouveaux types:

var q = from e in Entities 
     select new 
     { 
      Id = e.Id, 
      Name = e.Name, 
      Children = from c in e.Children 
         select new 
         { 
          Id = c.Id, 
          Name = c.Name, 
          // etc. 
         }, 
      // etc. 
     }; 
var s = serializer.Serialize(q); 
1

Je suppose que vous essayez de sérialiser en XML. Dans les deux cas, le problème provient des références circulaires dans les objets entité LINQ. Disons que vous avez une table principale Customers avec une deuxième table Orders. L'entité Customers a une référence à tous les Orders ce client a (généralement Customer.Orders). L'entité Orders a une référence à l'entité client (généralement Order.Customer). Lorsque le sérialiseur tente de sérialiser cet objet, il reconnaît la référence circulaire et génère une erreur. Pour faire ce que vous voulez, vous devez écrire votre propre sérialiseur ou convertir les objets en quelque chose qui peut être sérialisé directement, comme des objets de sérialisation personnalisés qui contiennent juste les informations que vous voulez afficher dans la version sérialisée.

Questions connexes