2010-01-21 2 views

risposta

13

Quando ho bisogno di serializzare, generalmente proietto su altri tipi. Questo elimina riferimenti circolari, oltre ad altri dati che non desidero serializzare. Ad esempio:

var q = (from c in Repository.Customers() 
     where c.Id == id 
     select new 
     { 
      Name = c.Name, 
      Orders = from o in C.Orders 
         select new 
         { 
          Date = o.Date 
         } 
     }).First(); 
return Json(q); 
5

Quando si crea un'associazione in Progettazione modelli (tasto destro del mouse Aggiungi-> associazione) si otterrà un finestre popup che assomiglia a questo:

Add association window http://i45.tinypic.com/xmoqcp.jpg

Avviso le caselle di controllo proprietà di navigazione, è possibile deselezionarli se non vuoi che vengano generati. Per risolvere il tuo problema di riferimento circolare, assicurati che solo uno o nessuno siano selezionati, non entrambi.

+0

Siamo spiacenti, I c non riesci a recuperare quello che hai detto. Puoi dirlo di più specificare? Grazie! – Roy

+0

Aggiornamento con screenshot – Charlie

+0

Grazie Charlie, ma non riesco a vedere l'immagine. E il mio designer non ha la casella di controllo su di esso. :(Sto usando Visual Studio 2008. – Roy

5

Ho risolto questo problema in EF 3.5 Modificando la proprietà di navigazione del figlio Getter da pubblico a interno.

+0

Grazie, che ha lavorato per me. Non del tutto sicuro se è il modo giusto per farlo però! –

1

Su serverlevel:

[DataContract(IsReference = true)] 

MSDN

+0

Questo ha funzionato per me. – Rich

0

Guarda questa pagina Spero di poter fare per sopravvivere
http://msdn.microsoft.com/en-us/data/jj574232.aspx

+3

Nota che [link-solo risposte sono discoteca uraged] (http://meta.stackoverflow.com/tags/link-only-answers/info), le risposte SO dovrebbero essere il punto finale di una ricerca di una soluzione (vs. ancora un altro scalo di riferimenti, che tendono a diventare stantii nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. – kleopatra

0

Il getter cambiare per interno per una navigazione bambino ha lavorato per me con entitfy framework v5/v6 sotto Web API v2

+0

ha riparato l'aiuto di api sul Web ma ha ucciso la serializzazione – marcusdev