8 messaggi dal 17 maggio 2011
Ciao a Tutti,

Ho una domanda che mi affligge.
In sostanza sto sperimentando un po di cose con EF code First e linq.
Ho una classe user che ha come proprietà virtual list userrole a cui è correlata la classe role.
Quanto io recupero un utente vedo che nell'oggetto ha la lista degli userrole, a cui poi è presente in vero e proprio role.
Il problema è che user role, contiene a sua volta l'oggetto user, a cui a sua volta contiene userrole in è contenuto user ecc ecc ecc.
In questo modo è un'alberatura infinita e penso che abbia sbagliato qualcosa nella formattazione della classe o nel recupero dell'oggetto.
Questo lo vedo dall'espressione di controllo di VisualStudio e la mia paura è che ci sia un recupero di dati inutile.

PAolo
204 messaggi dal 22 gennaio 2017
Contributi
Ciao Paolo, non ti preoccupare, sono referenze allo stesso oggetto.
Visual studio semplicemente naviga l'albero.

Se hai la necessità di serializzare un oggetto simile in json, hai lo stesso problema.
La soluzione, per quest'ultimo problema, è quella di impostare nei settings di Newtonsoft il reference loop a false. In questo caso particolare, alla prima occorrenza, smette di navigare i nodi.
8 messaggi dal 17 maggio 2011
Ok perfetto.
MA nel caso in cui non desideri importare l'entità come virtual, percui evitare il recupero automatico dei dati, come posso fare a recuperarli in un secondo momento?
Devo costruire ad hoc una linq, oppure c'è un metodo apposito?

Grazie mille delle risposte.
204 messaggi dal 22 gennaio 2017
Contributi
Bisogna fare un distinguo.
Si imposta virtual la collezione o entità che può essere opzionale.

Per recuperare i dati relazionati hai 2 metodi:
1) usi early loading: quando utilizzi un oggetto, EF si preoccupa di caricarlo in memoria.
2) utilizzi sugli oggetti (dbset) del dbcontex la clausola Include.

https://docs.microsoft.com/en-us/ef/core/querying/related-data

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.