8
votes

Comment supprimer une référence circulaire dans le cadre d'entité?

La référence circulaire entre mon client et les entités commandes a provoqué une exception lors de la sérialisation. Y a-t-il un moyen de forcer EF à générer une référence à une seule direction entre ces deux entités? Merci d'avance!


0 commentaires

6 Réponses :


5
votes

Lorsque vous créez une association dans le modèle de modèle (clic droit sur Add-> Association), vous obtiendrez une fenêtre contextuelle qui ressemble à ceci:

 Ajouter une fenêtre d'association

Notez les cases à cocher Propriété de navigation, vous pouvez les désélectionner si vous ne voulez pas qu'ils soient générés. Pour résoudre votre problème de référence circulaire, assurez-vous qu'un seul ou aucun n'est coché, pas à la fois.


6 commentaires

Désolé, je ne peux pas rattraper ce que tu as dit. Pouvez-vous le mettre plus préciser? Merci!


Merci Charlie, mais je ne peux pas voir la photo. Et mon concepteur n'a pas de coche de coche dessus. :( J'utilise Visual Studio 2008.


OK, j'utilise l'entité Framework 4.0 sur VS2010 Beta 2 ... Peut-être que ce n'est peut-être pas quelque chose que vous pouvez faire dans la version plus ancienne de EF.


Dans 3.5 SP1, vous ne pouvez pas supprimer les propriétés de navigation à l'aide du concepteur, vous devez recourir à la section de la section ConceptualModel du XML dans le fichier EDMX. Cependant, je pense que la réponse de Craig est bien meilleure. Vous ne voulez pas nécessairement changer votre modèle pour résoudre un problème de sérialisation. Il n'y a que tant que vous pouvez faire en changeant le modèle.


@Charlie, James: merci beaucoup. Je vais ajouter DTO à mon projet.


@Alex James. Oui, je vais y aller avec ça aussi, la solution Craigs est préférable



14
votes

Quand j'ai besoin de sérialiser, je projette généralement sur d'autres types. Cela élimine les références circulaires, ainsi que d'autres données que je ne veux pas sérialiser. Par exemple: xxx


0 commentaires

5
votes

J'ai résolu ce problème dans EF 3.5 en modifiant la propriété de navigation de l'enfant du public à interne.


1 commentaires

Merci, cela a fonctionné pour moi. Pas tout à fait sûr si c'est la bonne façon de le faire cependant!



1
votes

sur serverlevel: xxx

msdn


0 commentaires

0
votes

regarder cette page J'espère que je pourrais faire pour survivre
http://msdn.microsoft.com/en-us/data/jj574232.aspx


1 commentaires

Notez que Les réponses de liaison seules sont découragées , afin que les réponses devraient être le point final d'une recherche pour une solution (contre une autre halte de références, qui tendent à être obsolète au fil du temps). Veuillez envisager d'ajouter un synopsis autonome ici, en gardant le lien comme référence.



0
votes

Le changement de getter à interne pour une navigation pour enfants a fonctionné pour moi avec Inttexte Framework V5 / V6 sous Web API V2


1 commentaires

il a fixé l'aide de l'API Web mais a tué la sérialisation