2010-07-14 10 views
0

J'essaie de désérialiser JSON que je reçois à partir d'une source externe dans une classe d'entité Entity Framework en utilisant le code suivant:tout en essayant de désérialiser JSON en utilisant EntityFramework JavaScriptSerializer

var serializer = new JavaScriptSerializer(); 
IList<Feature> obj = serializer.Deserialize<IList<Feature>>(json); 

L'exception suivante est lancé:

Objet de type 'System.Collections.Generic.List 1[JustTime.Task]' cannot be converted to type 'System.Data.Objects.DataClasses.EntityCollection 1 [JustTime.Task]'.

Mon modèle est simple: La classe Feature a une relation un-à-plusieurs avec la classe Tâches. Le problème semble être le désérialisateur tente de créer une liste générique pour contenir la collection de tâches au lieu d'un EntityCollection.

J'ai essayé d'implémenter un JavaScriptConverted qui gérerait System.Collections.Generic.List mais il n'a pas été appelé par le deserializer.

+0

Quelle version de .NET utilisez-vous? Aussi, que se passe-t-il si vous supprimez l'assigment à 'obj '? –

+0

J'utilise .net v4. La suppression de l'assignation n'aide pas car l'exception se produit à l'intérieur du désérialiseur lors de la désérialisation de la liste des tâches d'une fonction. – Barak

+0

S'il vous plaît vérifier les liens suivants: - http://stackoverflow.com/questions/2002940/json-and-circular-reference-exception - http://stackoverflow.com/questions/5588143/ef- 4-1-code-first-json-circulaire-reference-serialization-error – Korayem

Répondre

0

Vous ne pouvez pas affecter une liste directement à une collection EF. Vous devez ajouter à cela. Alors désérialise à un POCO et ensuite copie.

+0

C'est évidemment la solution la plus simple, mais il faudrait que je duplique tout le modèle d'objet juste pour contourner un problème technique mineur, pas vraiment ma méthode de prédilection des choses. – Barak

Questions connexes