Was sind die Nachteile von Linq im Allgemeinen sind.Nachteile von Linq
Antwort
- kann schwer zu verstehen, wenn Sie zuerst mit ihm
- Latente Ausführung beginnen können Fehler aus ihren Ursachen (in Bezug auf die Zeit) trennen
- Out-of-Process LINQ (zB LINQ to SQL) wird immer eine etwas undichte Abstraktion sein - Sie müssen wissen, was funktioniert und was nicht wesentlich
ich noch LINQ lieben massiv aber :)
EDIT ist,: nach dieser kurzen li geschrieben st, erinnerte ich mich, dass ich eine Antwort auf a very similar question haben ...
Eigentlich kann ich nicht von irgendwelchen Nachteilen denken. Es macht das Programmieren des Leben viel einfacher, weil eine Menge Dinge kann in einer kompakteren, aber immer noch besser lesbar Art und Weise geschrieben werden.
Aber dies gesagt hat, muß ich auch mit Jon damit einverstanden, dass Sie eine Vorstellung haben sollten, was zu tun mir war (aber das gilt für alle technologischen Fortschritte).
der einzige Nachteil, den es hat seine Leistung sieht, ist diese article
Wie jede Abstraktion in der Programmierung, ist es anfällig für ein Missverständnis: „Wenn ich diese Abstraktion nur verstehen, ich brauche nicht zu verstehen, was passiert, unter der Decke. "
Die Wahrheit ist, wenn Sie verstehen, was unter den Abdeckungen passiert, erhalten Sie viel mehr Wert aus der Abstraktion, weil Sie verstehen, wo es aufhört anwendbar zu sein, so dass Sie in der Lage sein werden, sich zu bewerben es mit mehr Vertrauen des Erfolgs, wo es angebracht ist.
Dies ist aller Abstraktionen wahr, und gilt in Eimern zu Linq. Um zu verstehen, Linq zu Objekten, das Beste, was zu tun ist, zu lernen, wie Select
zu schreiben, Where
, Aggregate
etc. in C# mit yield return
. Und dann herauszufinden, wie yield return
viel handgeschriebenen Code ersetzt durch sie alle mit Klassen zu schreiben. Dann werden Sie in der Lage sein, es zu verwenden, um mit einer Aufwertung der Anstrengung, die es Ihnen spart, und es wird nicht mehr wie Magie erscheinen, so dass Sie die Einschränkungen verstehen.
Das Gleiche gilt für die Varianten von Linq, wo die Prädikate erfaßt werden als Ausdruck und in einer anderen Umgebung abtransportiert zu ausgeführt werden. Sie müssen verstehen, wie es funktioniert, um es sicher zu verwenden.
die Nummer 1 Nachteil Linq So ist: die einfachen Beispiele täuschend kurz und einfach aussehen. Das Problem ist, wie weiß der Autor der Probe, was er schreiben soll? Weil sie wussten, wie sie alle aus in der langen Form zu schreiben, und sie wussten, wie Stücke von Linq als Abkürzungen verwendet werden könnten, und so kamen sie in der schönen kurzen Version.
Wie gesagt, nicht wirklich spezifisch für Linq, aber höchst relevant es trotzdem.
Der größte Nachteil von LINQ ist, dass es (mit Datenbank-Backends) nicht über eine Repository-Schnittstelle verwendet werden kann, ohne dass es ein leaky abstraction ist.
LINQ ist fantastisch innerhalb eine Schicht (vor allem der DAL usw.), aber da verschiedene Anbieter verschiedene Dinge unterstützen, können Sie nicht auf Expression<Func<...>>
oder IQueryable<T>
Funktionen arbeiten, um das gleiche für verschiedene Implementierungen verlassen können.
Als Beispiele zwischen LINQ-to-SQL und Entity Framework:
- EF nicht
Single()
unterstützt - EF Fehler, wenn Sie
Skip
/Take
/First
ohne expliziteOrderBy
- EF unterstützt keine UDFs
usw. Der LINQ-Provider für ADO.NET Data Services unterstützt differ nt Kombinationen. Dies macht Spott und andere Abstraktionen unsicher.
Aber: für In-Memory (LINQ-zu-Objekte) oder in einer einzigen Schicht/Implementierung ... fantastisch.
Einige weitere Gedanken hier: Pragmatic LINQ.
Anonyme Typen. Korrekter ORM sollte immer Objekte von 'Ihrem' Typ zurückgeben (partielle Klasse, mit der Möglichkeit, meine Methoden hinzuzufügen, zu überschreiben etc.). Es gibt Dutzende von Tutorials und Beispiele für verschiedene komplexe Abfragen, die linq verwenden, aber keiner von ihnen möchte den Vorteil der Rückgabe eines "Tütchens mit Eigenschaften" erklären (return new {.........}). Wie soll ich mit anonymen Typ arbeiten, wickle es wieder in eine andere Klasse?
- 1. Nachteile von Erweiterungsmethoden?
- 2. Nachteile von CakePHP-Framework
- 3. Nachteile von shared_ptr
- 4. Nachteile von Sequel gem
- 5. Nachteile von Tomcat Http11NioProtocol
- 6. Nachteile und Einschränkungen von ETags
- 7. Vorteile/Nachteile von explodierten Kriegen
- 8. Vorteile/Nachteile von Auto-Zeigern
- 9. Nachteile von First-Class-Funktionen
- 10. Vorteile und Nachteile von DotNetNuke?
- 11. Nachteile von onMousedown vs onClick?
- 12. Nachteile von MySQL Row Locking
- 13. Vorteile/Nachteile von Redis-Paginierungsstrategien
- 14. Index Nachteile
- 15. Nachteile, die mit Verwendung von Formularauthentifizierung „slidingExpiration“
- 16. Vor- und Nachteile der Verwendung von ReactJS
- 17. Vor- und Nachteile von DDD-Repositorys
- 18. Was sind die Nachteile von Stackless Python?
- 19. Vor-und Nachteile von NSLocalizedString ohne Kommentar
- 20. Nachteile von TestNG im Vergleich zu jUnit?
- 21. Was sind die Nachteile von Lucene?
- 22. Nachteile der Verwendung von vielen if-Anweisungen
- 23. Was sind die Vor-/Nachteile von py2exe
- 24. Nachteile von 'Access-Control-Allow-Origin: *'?
- 25. Auswirkung/Nachteile von rdynamic gcc Option
- 26. Nachteile von statischen Methoden in PHP
- 27. Was sind die Nachteile von optionalen Nachkommas?
- 28. Vorteile/Nachteile von pconnect Option in CodeIgniter
- 29. Vor-und Nachteile von Smart-Zeigern
- 30. Nachteile von MARS (Multiple Active Result Sets)?
Dann hat es keine Nachteile! Der Aufwand, der in diesem Artikel gemessen wird, würde für die große Mehrheit der realen Anwendungen keinen Unterschied machen. –
ich bin jetzt eine app mit linq und leistungsprobleme zu entwickeln stört mich wirklich, speziell wenn Sie so etwas wie dynamische Abfrage verwenden sollten! – Sadegh