Pracuję dla klienta, który ma duży projekt korzystający z Linq-to-SQL. Kiedy projekt się rozpoczął, był to oczywisty wybór, ponieważ Entity Framework nie miał w tym czasie kilku głównych funkcji, a wydajność Linq-SQL była znacznie lepsza.
Teraz EF ewoluował i Linq-to-SQL nie obsługuje asynchronizacji, co jest doskonałe w przypadku wysoce skalowalnych usług. Czasami mamy ponad 100 żądań na sekundę i pomimo zoptymalizowania naszych baz danych, większość zapytań wciąż trwa kilka milisekund. Z powodu synchronicznych wywołań bazy danych wątek jest zablokowany i niedostępny dla innych żądań.
Myślimy o przejściu na Entity Framework, wyłącznie dla tej funkcji. Szkoda, że Microsoft nie zaimplementował obsługi asynchronizacji w Linq-to-SQL (lub open source, aby społeczność mogła to zrobić).
Dodatek grudzień 2018 r .: Microsoft zmierza w kierunku .NET Core, a Linq-2-SQL nie obsługuje .NET Core, więc musisz przejść do EF, aby mieć pewność, że w przyszłości możesz migrować do EF.Core.
Jest także kilka innych opcji do rozważenia, takich jak LLBLGen . Jest to dojrzałe rozwiązanie ORM, które istnieje już od dawna i zostało udowodnione, że jest bardziej przyszłościowe niż rozwiązania danych MS (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).