Ho una tabella utenti nel mio database che include nome utente, password crittografata, e-mail e ID ruolo. Vorrei recuperare un elenco di tutti gli utenti escludendo la password.
Attraverso la ricerca ho trovato le risposte per ef 6 e sotto, ma nulla che funzioni in ef core.
Questo è quello che ho attualmente:
using (var context = new dbcontext())
{
return context.Users.ToList()
}
Ho provato
using (var context = new dbcontext())
{
return context.Users
.Select (u => new
{
Id = u.Id
Username = u.Username
Email = u.Email
}
.ToList()
}
Fare questo non restituisce nulla.
Ho provato a mappare una nuova entità e classe alla tabella lasciando fuori la colonna della password, ma non viene restituito nulla. Penso possibilmente perché è un campo obbligatorio.
Attualmente sto solo convertendo la risposta in una nuova classe UserSummary che non ha la proprietà password ma credo che ci sia un modo per farlo senza che la password venga restituita.
Puoi creare una classe con le proprietà che vuoi usare ex:
classe origina:
public class Rating
{
public Rating() { }
public int IdRating { get; private set; }
public string IdUser { get; set; }
public decimal Value { get; private set; }
public string Comment { get; private set; }
public bool IsEnabled { get; set; }
public int IdCorrespondent { get; private set; }}
Classe di destinazione
public class RatingView
{
public Rating() { }
public int IdRating { get; private set; }
public decimal Value { get; private set; }
}
E mappalo sul repository con il metodo select ex:
public List<RatingView> ListRatings()
{
return _context.Ratings.Select(x => new RatingView
{
IdRating = x.IdRating ,
Value = x.Value ,
}).ToList();
}
se non vuoi rimodellare la classe puoi fare la tua query usando dapper, e puoi trovare cose interessanti dapper qui