Verwenden von LINQ -Ausdrücken, um die Client -Seite von DAL zu entkoppeln (die Server -Seite ist)
-
23-08-2019 - |
Frage
Ich konnte die Antwort unter den vielen Beiträgen auf Linq nicht finden, also bin ich hier. Wir haben eine Client-Server-Anwendung, bei der die Client-Seite absolut keine Kenntnis des tatsächlichen DAL auf der Serverseite hat, das übrigens mit NHiberNate implementiert wird. Das heißt, es gibt keine Verweise auf NHibernate von den Client -Seitenbaugruppen sowie keine Datenbankabstraktion. Die Kundenseite spricht ausschließlich in den Bedingungen von Unternehmen, die auf CSLA -Geschäftsobjekten basieren.
Ich möchte die Client -Seite die angezeigten Entitäten filtern lassen. Meine Idee ist es, die Client -Seite einen LINQ -Ausdruck zu konstruieren, ihn auf die Serverseite zu übertragen, den Daten zu holen, der den Ausdruck mit LINQ an NhiberNate entspricht und ihn wieder an den Client zurückgibt.
Ich habe Linq heruntergeladen und in NhiberNate zusammengestellt, aber leider kann ich kein Beispiel finden, das Linq -Ausdrücke (auch bekannt als Client -Seite) von der jeweiligen NHibernateContext -Instanz (auch bekannt als Serverseite) entkoppelt. Alle Beispiele scheinen wie zu sein
from c in db.Customers where ...
dh sowohl der Kontext (DB.Customers) als auch der Ausdruck (wo ...) in einer Aussage.
Ist es möglich, sie zu entkoppeln? Vielen Dank.
Lösung 2
Dies stellt sich als ziemlich einfach heraus - - from c in db.Customers where linq-exp select c
ist äquivalent zu db.Customers.Where(linq-exp)
.
Ich habe dies tatsächlich als Teil eines umfassenderen Problems benötigt - wenn ich einen LINQ -Ausdruck auf der Client -Seite angibt und diese zum Abrufen von Daten auf der Serverseite verwenden kann. Mein Post hier beschreibt es bei weiteren Details.
Andere Tipps
Schauen Sie sich diesen Beitrag an. Mit diesem Konzept können Sie Abfrageparameter übergeben und Ihre Abfrage dynamisch erstellen.