LinQ to SQL dynamisch zusammensetzen

11/09/2009 - 08:39 von Moldaschl Helmut | Report spam
Hallo

Bei bisherigen Zugriffen auf SQL Datenbanken habe ich sehr oft die
Möglichkeit ausgenutzt den SQL String den ich über den SQL Command
geschickt habe dynamisch zusammen zu setzen

Wie zb.:
sql = "SELECT * FROM TableX Where"
sql_bed = vbnullstring

if Bed1 = True then
if not SQL_BED = vbnullstring then sql_bed =sql_bed & " AND "
sql_Bed = sql_Bed & " (Feld1 = " & Var1 & ")
end if

if Bed2 = True then
if not SQL_BED = vbnullstring then sql_bed =sql_bed & " AND "
sql_Bed = sql_Bed & " (Feld2 = " & Var2 & ")
end if

...
usw.
und dann an einen SQL-Command (so wie oben oder parametiert) übergeben kann


Für LinQ to SQL habe ich noch keine Möglichkeit gefunden
den Ausdruck
Dim query = From L in Datacontext.Tablex Where L.Feld1 = Var1 AND L.Feld2 =
Var2 .. SELECT L

so zu formulieren, dass ich das Where Kriterium frei und dynamisch
zusammensetzen kann, da es sich hier nicht um einen String handelt,
den ich zuerst zusammenstellen und im Anschluß einsetzen kann

Für Tipps wàre ich dankbar
Grüße
Helmut
 

Lesen sie die antworten

#1 Elmar Boye
11/09/2009 - 09:25 | Warnen spam
Hallo Helmut,

Moldaschl Helmut schrieb:
Bei bisherigen Zugriffen auf SQL Datenbanken habe ich sehr oft die
Möglichkeit ausgenutzt den SQL String den ich über den SQL Command
geschickt habe dynamisch zusammen zu setzen

Wie zb.:
sql = "SELECT * FROM TableX Where"
sql_bed = vbnullstring



Etwas wie VbNullString sollte man in VB.NET làngst nicht mehr
nötig haben, ...


if Bed1 = True then
if not SQL_BED = vbnullstring then sql_bed =sql_bed & " AND "
sql_Bed = sql_Bed & " (Feld1 = " & Var1 & ")
end if



und mit dem Einsatz eines StringBuilders solltest Du
Dich ebenfalls vertraut machen.
<URL:http://msdn.microsoft.com/de-de/lib...5.aspx>

Zudem ist der Einsatz von eingebetteten VAriablen anfàllig
für SQL Injection <URL:http://de.wikipedia.org/wiki/SQL-Injection>
und der Einsatz von Parametern vorzuziehen. Zumal dadurch
die Performanz von Anweisungen erhöht wird,da Abfrageplàne
hàufiger wieder verwendet werden können.

und dann an einen SQL-Command (so wie oben oder parametiert) übergeben kann


Für LinQ to SQL habe ich noch keine Möglichkeit gefunden
den Ausdruck
Dim query = From L in Datacontext.Tablex Where L.Feld1 = Var1 AND L.Feld2 =
Var2 .. SELECT L



Linq To Sql sieht das von Haus nicht vor, auch wegen der damit
aufgegebenen Typsicherheit. Das Entity Framework als
konkurrierende Zugrifftechnik kennt wiederum Entity SQL
<URL:http://msdn.microsoft.com/de-de/lib...0.aspx>
womit Dein obiges Vorgehen machbar ist.

Weitergehend mit Linq als Technik wàre realisierbar:
<URL:http://www.albahari.com/nutshell/pr...r.aspx>

was auf Dynamic Linq aus den Technologie-Beispielen basiert:
<URL:http://weblogs.asp.net/scottgu/arch...y.aspx>

Nur würde ich Dir empfehlen, Dich zunàchst mit Linq als solchem
nàher auszueinanderzusetzen, denn ohne die Grundlagen zu beherrschen
wirst Du wenig Erfolg haben:
<URL:http://msdn.microsoft.com/de-de/lib...6.aspx>

Gruß Elmar

Ähnliche fragen