Najwydajniejszy sposób na konwersję Encja -> DTO podczas selectów

Najwydajniejszy sposób na konwersję Encja -> DTO podczas selectów
bbhzp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

Cześć,
w jaki sposób zamieniacie encje Entity Frameworkowe na modele DTO, podczas pobierania danych?

W poradniku, który przerabiam (dot. Web API), pan każe pisać tak:

Kopiuj
Restaurant res = _ctx.Restaurants.Where(x => x.Id == id).FirstOrDefault()...
RestaurantDto dto = _mapper.Map<RestaurantDto>(res); // gdzie _mapper to AutoMapper :)

Nie jest to najefektywniejsza metoda, bo pobieram wszystkie kolumny po to, żeby potem je "obcinać".

W internecie znalazłem, że AutoMapper zawiera metodę ProjectTo:

Kopiuj
Restaurant res = _ctx.Restaurants
  .Where(x => x.Id == id)
  .ProjectTo<RestaurantDto>(_mapper.ConfigurationProvider)

Czytałem też wcześniej na forum, że niektórzy EF używają tylko do dodawania, edycji i usuwania danych, a selecty robią już za pomocą Dappera.

Jakie rozwiązanie jest najlepsze?

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
7

a nie możesz po prostu użyć Select?

kzkzg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 935
7

nie uzywam Automaperra, bo po co, wiec..

Kopiuj
Restaurant res = _ctx.Restaurants
  .Where(x => x.Id == id)
  .Select(o=> new RestaurantDto {...} )

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.