Bonjour,
Je rencontre un problème qui me laisse un peu perplexe : impossible de serialiser une entité dès lors qu'un clé étrangère existe. J'explique :
J'ai un EDMX (Database first, la base est déjà créée et exploitée), dont je veux retourner des données par un asmx au sein d'une appli (appli interne, la question de la sécurité ne se pose pas) :
et j'ai un appel des plus simples :
Cet appel se fait depuis un script javascript en AJAX, donc la réponse sera du JSON
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 [WebMethod(EnableSession = true)] public Applicatif GetProjet(long id) { Applicatif cret = null; using (RessourcesDevEntities bdd = new RessourcesDevEntities()) { bdd.Configuration.LazyLoadingEnabled = false; cret = bdd.Applicatif.FirstOrDefault(_d => _d.id == id); } return cret; }
Si j'interroge mon service web (en allant à son url, par exemple), j'ai cette erreur :
(or il ne s'agit pas d'une interface, mais d'une class)
et plus loin :
Une erreur s'est produite lors de la réflexion du type 'DevRessources.Database_2.Applicatif'
J'ai désactivé le chargement différé (ce qui de ma compréhension correspond à la ligne : bdd.Configuration.LazyLoadingEnabled = false;
Mais rien n'y fait. Je peux supprimer les relations dans mon edmx, dont je n'ai pas forcément nécessité, elles reviennent aussi sec dès que je mets à jour mon edmx .
J'ai bien compris le fond du problème : Applicatif fait référence à Documents, et vice versa, ce qui cause une référence circulaire.
(les exemples ci-dessus sont simplifiés, bien-sûr)
Donc mes questions :
- Qu'est-ce qui m'échappe ?
- Comment résoudre ce problème ?
Merci d'avance pour vos réponses.
Partager