Wenn ich dringend genug wollte, konnte ich LINQ-to-SQL zusätzliche LINQ-Konstrukte hinzufügen (wie wäre es möglich, wenn ich meinen eigenen LINQ-Provider erstelle)? Zum Beispiel werden viele der eingebauten LINQ-Operatoren (XYZ.Any()
) direkt in SQL übersetzt (z.B. IF EXISTS(XYZ)
).Kann ich die von LINQ-to-SQL unterstützten Operatoren erweitern?
Wenn ich ein spezielles Konstrukt benötigt, würde ich sogar in der Lage sein, den Satz zu ergänzen, oder diese in den eigentlichen LINQ-to-SQL-Provider gebacken werden muss?
Wie würde ich eine neue Operatorimplementierung hinzufügen? Sind C# -Erweiterungsmethoden genug, um den Job zu erledigen?
Wenn die Antwort ja ist, würde jemand so geneigt Lage sein, viel zu ersetzen (alle?) Von sproc Fähigkeit über die dynamische SQL erzeugt von LINQ to SQL?
Ich bin ziemlich vertraut mit dem, was es aus dem AST-Parsing/Expression-Tree-Ende der Dinge nehmen würde. Ich habe eigentlich noch keinen genauen Bedarf, habe mich aber meistens nur für den zukünftigen Gebrauch gewundert. Es ist schade, denn es wäre ein wirklich cooles Modell, wenn * alles * in LINQ ausgedrückt werden könnte. Nun, wenn Sie SubSonic & NHibernate erwähnen, ist das, weil sie * Erweiterung * erlauben oder nur als ein anderer Anbieter, der haben könnte, was ich brauche? – mckamey
Ich bin mir nicht bewusst, dass es für ExSonic oder NHibernate eine eingebaute Ausdruckserweiterung gibt, aber Sie haben zumindest die Möglichkeit, die Quelle herunterzuladen und Ihre eigenen hinzuzufügen. So cool es wäre, in LINQ _everything_ auszudrücken, gibt es einige SQL-Konstrukte, die einfach nicht gut abbilden. Das kann sich mit der erweiterten Expression-Unterstützung in .NET 4 ändern. – dahlbyk