Buonasera.
in un progetto a cui mi sto cimentando avrei bisogno di estrarre nella select la foto più recente associata ad un'anagrafica.
Nella query di SQL inserivo una sottoquery al posto del campo che mi restituiva un risultato ordinandola dalla più recente
Faccio un esempio:
SELECT IDANAGRAFICA, COGNOME, NOME, (SELECT TOP 1 NOMEFILE FROM T_FOTO ORDER BY DATAINSERIMENTO DESC) AS FOTO FROM T_ANAGRAFICA .....
Ho qualche difficoltà con entity framework nel senso che non so come rappresentare questo sistema:
public async Task<List<DiverViewModel>> GetDiversForCardIssueAsync(SelectDiverInputModel input)
{
IQueryable<Entities.Anagrafica> baseQuery = dbContext.Anagrafica
.AsNoTracking()
.Where(a => a.Cognome.StartsWith(input.Cognome) && a.Nome.StartsWith(input.Nome))
.Include(a => a.Cities)
.Include(s => s.Cities.States)
.Include(p => p.Cities.Province)
.OrderBy(a => a.Cognome).ThenBy(a => a.Nome);
List<DiverViewModel> viewModel = await baseQuery
.Select(a => certificationService.GetDivers(a))
.ToListAsync();
return viewModel;
}
Se utilizzo il certificationService per generare una query verso la tabella delle foto in questo modo:
public DiverViewModel GetDivers(Anagrafica anagrafica)
{
return new DiverViewModel()
{
IdDiver = anagrafica.AnagraficaId,
Name = $"{anagrafica.Cognome.ToUpper()} {anagrafica.Nome}",
DDN = anagrafica.DDN.HasValue ? anagrafica.DDN.ToString()[..10] : string.Empty,
LDN = $"{anagrafica.Cities.AccentCity} - {anagrafica.Cities.States.StateName ?? ""} - {anagrafica.Cities.Province?.ProvName ?? ""}",
IdMember = anagrafica.MemberId,
Foto = userService.GetFotoRecente(anagrafica.AnagraficaId).Result.NomeFile
};
}
Lo userService.GetFotoRecente mi dice "MySqlConnection is already in use."
Ovviamente in questo punto del programma (ma poi anche in altre) mi serve reperire non una foto della persona, ma l'ultima inserita.
Mi sapreste indicare come usare Entity Framework in un contesto come il mio?
Grazie per la gentilezza