Uso EntityFrameworkCore.SQLite v1.1.3, VS 2015, semplifica l'applicazione WPF, .Net 4.6
People
tabelle People
e Orders
sono correlate come "many-to-many" tramite la tabella OrdersToPeople
nel mio database. Ho creato classi dbContext usando SQLite Tools.
Io uso questo codice per controllare i dati caricati:
var list = myDbContext.People
.Include(t => t.OrdersToPeople);
foreach (var element in list)
{
var c = element.OrdersToPeople.Count;
//c is always 0. Why?
}
Quando carico le tabelle OrdersToPeople
o Orders
allo stesso modo
var list = myDbContext.OrdersToPeople
o
var list = myDbContext.Orders
, vedo i dati. Quando faccio SQL-query, mi restituisce dati corretti.
Perché Include
non carica OrdersToPeople
?
Ps Il campo OrdersToPeople
è virtual
.
public partial class People
{
//...fields...
public virtual ICollection<OrdersToPeople> OrdersToPeople { get; set; }
public People()
{
OrdersToPeople = new HashSet<OrdersToPeople>();
}
}
public partial class OrdersToPeople
{
public long Id{ get; set; }
public long PeopleId { get; set; }
public long OrderId { get; set; }
public virtual People People { get; set; }
public virtual Orders Orders { get; set; }
}
Penso che il comportamento sia previsto. Hai provato a invocare ToList sulla tua selezione?
Sembra che EF stia ignorando include senza ToList: Entity Framework Core che ignora .Include (..) senza .ToList (..) indirettamente
var list = myDbContext.People
.Include(t => t.OrdersToPeople);
.ToList();