Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Liczba Entity Framework Core nie ma optymalnej wydajności

Nie ma tu wiele do odpowiedzi. Jeśli twoje narzędzie ORM nie generuje oczekiwanego zapytania SQL z prostego zapytania LINQ, nie ma możliwości, aby to zrobić, przepisując zapytanie (i nie powinieneś tego robić w pierwszej kolejności).

EF Core ma koncepcję mieszanej oceny klienta/bazy danych w zapytaniach LINQ co pozwala im wydać wersje EF Core z niekompletnym/bardzo nieefektywnym przetwarzaniem zapytań, tak jak w Twoim przypadku.

Fragment Funkcje poza EF Core (zwróć uwagę na słowo nie ) i Mapa drogowa :

Wkrótce planują usprawnić przetwarzanie zapytań, ale nie wiemy, kiedy to się stanie i na jakim poziomie (pamiętaj, że tryb mieszany pozwala im uznać zapytanie za "działające").

Więc jakie są opcje?

  • Po pierwsze, trzymaj się z dala od EF Core, dopóki nie stanie się naprawdę użyteczny. Wróć do EF6, nie ma takich problemów.
  • Jeśli nie możesz korzystać z EF6, bądź na bieżąco z najnowszą wersją EF Core.

Na przykład, zarówno w wersji 1.0.1, jak i 1.1.0, zapytanie generuje zamierzony kod SQL (przetestowany), więc możesz po prostu zaktualizować, a konkretny problem zniknie.

Należy jednak pamiętać, że wraz z ulepszeniami nowe wersje wprowadzają błędy/regresje (jak widać tutaj EFCore zwraca zbyt wiele kolumn dla prostego sprzężenia LEFT OUTER na przykład), więc zrób to na własne ryzyko (i rozważ ponownie pierwszą opcję, tj. Który jest odpowiedni dla Ciebie :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć alias bazy danych w SQL Server

  2. Jak ustawić domyślną wartość dla istniejącej kolumny?

  3. Nazwy plików SQL Server a wersje

  4. Skutecznie rozwiąż problem z bazą danych SQL Server utknął w trybie podejrzanym

  5. Jak określić niezmienną kulturę podczas korzystania z FORMAT() w SQL Server