La prévention StackOverflowException lors de la sérialisation objet Entity Framework graphique en Json

Je veux sérialiser un Entité Cadre De L'Autonomie Des Entités De Suivi intégralité de l'objet graphique (parents + enfants dans de nombreuses relations) en Json.

Pour la sérialisation-je utiliser ServiceStack.JsonSerializer.

C'est ainsi que ma base de données ressemble (pour des raisons de simplicité, j'ai laissé tomber tous les champs de pertinence):

La prévention StackOverflowException lors de la sérialisation objet Entity Framework graphique en Json

Je chercher un profil complet du graphe de cette façon:

public Profile GetUserProfile(Guid userID)
{
    using (var db = new AcmeEntities())
    {
        return db.Profiles.Include("ProfileImages").Single(p => p.UserId == userId);
    }
}

Le problème, c'est que tenter de le sérialiser:

Profile profile = GetUserProfile(userId);
ServiceStack.JsonSerializer.SerializeToString(profile);

produit un StackOverflowException.
Je crois que c'est parce que EF offre une infinie modèle de la vis de la sérialiseur. C'est, je peux techniquement appel: profile.ProfileImages[0].Profile.ProfileImages[0].Profile ... et ainsi de suite.

Comment puis-je "aplatir" mon EF objet graphique ou autrement empêcher ServiceStack.JsonSerializer de débordement de pile situation?

Remarque: je ne veux pas de projet de mon objet dans un type anonyme (comme ces suggestions) parce que ce serait introduire une très longue et difficile à maintenir fragment de code).

OriginalL'auteur Ofer Zelig | 2012-02-05