Ciao,
un paio di domande :)
nella classe del dominio (per intenderci, la classe utilizzata per ListEventiBarche) la proprietà Imbarco è dichiarata come virtual?
nella classe BarcaplanningDTO, ti servono sia Imbarco che Imbarcostring ?
Non è la causa dell'errore e quindi l'affrontiamo alla fine, al posto di aggregate meglio string.join
UPDATE:
E' probabile che l'errore sia generato a causa del lazy loading di ef.
Ci sono diverse soluzioni per la tua esigenza e per capire quale soluzione sia la migliore per il tuo contesto servirebbero altre info...allo stato attuale per es. potrebbe andare bene anche questo
public class BarcaplanningDTO
{
public int BarcaID { get; set; }
public List<string> Imbarco { get; set; }
public string Imbarcostring => string.Join(",", Imbarco);
}
var test = _db.ListEventiBarche
.Where(r => r.Evento.Event_date.Month == mese || r.Evento.Event_end_date.Month == mese)
.GroupBy(r => r.Barca.BarcaID)
.Select(r => new BarcaplanningDTO
{
BarcaID = r.Key,
Imbarco = r.Select(x => x.Imbarco.Nome).ToList()
}).ToList();
A livello generale due consigli a livello di performance
- verificare sempre (e capire realmente) come una query linq si traduce nella richiesta/e (non sempre è vero il rapporto 1:1) al database e per fare questo puoi guardare
qui- in questo caso quando disponibile meglio utilizzare la variante asincrona, await _db.ListEventiBarche....ToListAsync()
/Ciao
Modificato da scioCoder il 18 marzo 2019 13:53 -