Ho uno strano comportamento in C # con EF È un progetto .NET Core con EF Core 1.1.0
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
Ho creato due modelli, "Utente" e "Gruppo"
public class User
{
public int Id { get; set; }
public string name { get; set; }
public string lastName { get; set; }
public List<Group> Groups { get; set; }
}
public class Group
{
public int Id { get; set; }
public string groupName { get; set; }
public virtual User User { get; set; }
}
Il risultato schould mi dà un utente con una lista dei suoi gruppi.
Ora la parte strana:
Il risultato ritorna da DB, guardo allUser, i gruppi sono Null
Dò un'occhiata al contesto per vedere i gruppi
I gruppi sono riempiti:
Ora guardo di nuovo a tutto il risultato utente e magicamente il gruppo è compilato all'interno di ogni elemento utente.
I gruppi sono compilati all'interno dell'utente:
Apprezzo qualsiasi aiuto!!
Sembra che tu sia pigro a caricare le entità.
Puoi caricarli .Include
usando .Include
.
var allUsers = context.Users.Include(user => user.Groups).ToList();
Questo approccio carica la prima entità (Utenti) e le entità correlate come parte della query (Gruppi).
Questo comportamento deriva dalla pigrizia delle entità di caricamento.
Per impostazione predefinita, devi caricare manualmente ciascuna sub-entità. Si chiama caricamento impaziente.
Per caricare con interesse le tue entità, devi utilizzare il metodo .Include()
su ciascuna delle proprietà di navigazione.
es. context.User.Include(x => x.Groups)
Il metodo Include genera una nuova istruzione SQL per recuperare i tuoi gruppi dal database.
Quindi è possibile utilizzare il metodo ToList()
per forzare l'esecuzione della query.