Frage

Ich habe einige Möglichkeiten ausprobiert LINQ dynamische Abfragen verwenden - LINQKit und LINQ Dynamische Abfrage-Bibliothek. Ich mag es nicht die zweite, weil es eine Möglichkeit, die LINQ Idee tötet - können Abfragen bei der Kompilierung überprüfen. Und mit LINQKit habe ich kein gutes Beispiel für mein Szenario finden. Auch ich mag keine übermäßige Reflexion verwendet wird.

Mein Szenario ist folgendes. Ich habe einen Web-Service, die Business-Logik und DAL Logik tut. Die webforms Anwendung getrennt. Ich habe einige Seite mit tickboxes für jedes Feld der Benutzer filtern möchten, und auch ein Textfeld jeden Filterwert eingeben. Mein Web-Service verfügt über eine Methode GetByFilter wo ich einige Liste übergeben. QueryObject ist eine Klasse mit string: filedName, Objekt:. Fieldvalue

Dann meine Webservice erhält Liste der Query-Objekte und jetzt kommt die große Frage: wie es zu LINQ-Abfrage zu übersetzen, wenn die Feldanzahl und Filterwerte variieren?

Was noch schlimmer - ich LINQ2SQL nicht, aber ich verwende einige benutzerdefinierte DAL mit Repositories, die IQuery zurückkehren kann, wenn nötig (wie diese: http://msdn.microsoft.com/en-us/magazine/dd569757. aspx navigieren Sie zu Repository).

Ich weiß, ich Paging mit LINQ2SQL verwenden kann: var PagedData = query.Skip ((iPageNum - 1) * iPageSize) .Nehmen (iPageSize);

Wie kann ich die dynamischen Abfrage-Parameter (und iPageNum und iPageSize) von LINQ to my zugrunde liegenden DAL Implementierung bekomme diese Abfragen in einem Dataprovider bestimmten Art und Weise auszuführen? Vielleicht muss ich meine DAL als einige LINQ-Datenprovider implementieren (Ich habe keine Ahnung, wie es zu tun)?

Das Problem ist - ich will nicht auf LINQ2SQL abzuhängen (dann konnte ich nur meine Repositorys implementieren als Wrapper für LINQ2SQL), aber zur gleichen Zeit mag ich LINQ haben Fähigkeiten überall außerhalb meiner DAL abfragt. Ist es möglich?

War es hilfreich?

Lösung

Es ist sicherlich möglich, was Sie suchen Ihren eigenen IQueryable zu erstellen ist, ein „custom LINQ-Anbieter“

Hier ist der MSDN-Artikel: http://msdn.microsoft.com/ en-us / library / bb546158.aspx und Matt Warren hat eine Blog-Serie darauf: http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx

Ich empfehle darauf beginnen zu sehen, wie schwer es sein könnte und ob es lohnt sich für Sie!

Wenn Sie dagegen entscheiden, haben eine Lese dieses Blog-Post: http: // www .hanselman.com / Blog / RealWorldAppsInDaysNotWeeks.aspx sehen und wenn ADO.Net Data Services (Astoria) sind von Nutzen für Sie

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top