Wpis z mikrobloga

Treść przeznaczona dla osób powyżej 18 roku życia...
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Khaine: np w NoSQL, sa 3 metody generowania zapytań:
- LINQ(nie polecam)
- QueryBuilder w wersji reflection i string
- String

Jeśli musisz jakoś dynamicznie tworzyć zapytania to czasem trzeba zejść nawet na poziom String. Tak jak w życiu masz np wkrętarkę którą wkręcasz ale jak się okaże że gdzieś w dziurze musisz coś wkręcić i nie zmieścisz tam wkrętarki to bierzesz śrubokręt. Więc proponuje zamiast głowić się jak to
  • Odpowiedz
@Khaine: Jak ktoś wyżej pisał zrób to czystym SQLem. LINQ jest fajny do prostego filtrowania z elementami group by i having. Jak przychodzi to zrobienia czegoś bardziej złożonego to raz, że wyrażenie LINQ jest nieczytelne dla ludzi bez lekkiego zespołu aspergera, a dwa bardzo często wygenerowany SQL nie jest optymalny. Bardzo często pewne rzeczy jest szybciej i wydajniej machnąć jakimś CTE, nie mówiąc o tym, że jak ktoś używa takiego
  • Odpowiedz
@markaron: No właśnie zwykle mamy proste zapytanka więc nie ma problemu z EF core. Nie ma tam nic nadzwyczajnego więc nie ma też obaw że parser jakieś abominacje z siebie wyrzyga jeśli mamy zwykłe "daj mi cośtam gdzie klucz = ileśtam".

To jest pierwszy przypadek gdzie trzeba zrobić nieco bardziej złożone zapytanie z podzapytaniami i dlatego będąc nieprzyzwyczajonym do robienia skomplikowanych rzeczy w LINQ się zastanawiałem czy to się w
  • Odpowiedz
@Khaine: Jestem zwolennikiem podejścia, że do operacji insert, update i delete należy wykorzystywać EF (czy inny ORM) ale do selectów już lepiej wykorzystać np. Dappera, w prosty sposób będziesz mógł stworzyć SQL który będzie w miarę optymalny a nie generowany.
  • Odpowiedz
@Khaine: Nie siedze w SQL, ale podoba mi się metoda z klienta do MongoDB gdzie piszesz zapytania zachowaniem jakiejś struktury typu
Query.And(Query.Eq(m=>m.pole1,"wartość),Query.Gt(m=>m.pole2,"wartość)),
albo w wersji tekstowej, jak coś skompikowanego i owyzsza nie daje rady.
Query.And(Query.Eq("pole1","wartość),Query.Gt("pole2","wartość)),
Ogólnie też wyleczyłem sie z automatów konwertujących LINQ na zapytania bo czasem w miare oczywistym zapytaniu potrafiło zroibć babola i nie uzywać indeksu
  • Odpowiedz