2010-11-11 17 views
2

J'utilise JavaScriptSerializer pour sérialiser les entités EF4 et obtenir une référence circulaire en essayant de les sérialiser en JSON. Je ne veux pas éditer les modèles générés, j'ai donc fourni une classe de métadonnées, et j'ai marqué ces propriétés comme ScriptIgnore, mais je suppose que JavaScriptSerializer n'utilise pas les métadonnées, parce que je reçois toujours la même erreur.ScriptIgnore sur les métadonnées

Alors, comment voulez-vous sérialiser vos objets dans json dans ce cas. Est-il possible de le faire sans utiliser ViewModels et probablement avec le JavaScriptSerializer par défaut.

+0

semble qu'il existe une classe JavaScriptTypeResolver, qui pourrait probablement être utilisée pour utiliser la classe de métadonnées ?, des idées à ce sujet? – hazimdikenli

Répondre

3

En ajoutant un JavaScriptConverterlike so. Notez que nous n'avons pas besoin d'un accès spécial aux entités en cours de sérialisation pour faire cela, mais cela peut être très pénible si vous avez beaucoup d'entités qui sont affectées par ce problème. Si c'est un problème probable, il sera probablement moins difficile d'écrire une classe DTO (qui jumelle avec votre modèle) que vous pouvez contrôler plus directement.

Vous avez raison de ne pas éditer les classes générées, et (frustrant) vous ne pouvez pas utiliser un partial class pour ajouter des attributs aux membres déclarés dans une autre partie du partial class.

+0

Si j'utilisais des POCO au lieu des modèles d'entités générées, cela poserait-il toujours un problème? Qu'est-ce que tu penses? – hazimdikenli

+0

@hazimdikenli dans ce cas vous auriez un contrôle total sur le modèle pour le modifier. C'est en effet * en partie * ce que je voulais dire en créant une couche DTO. –