verwendetes Datenbanksystem: <SQLCompact>
Moin Leute,
ich habe folgendes Problem:
Es kommt jedesmal eine Exception wenn ich im Linq Query eine Variable verwende. KlassenID ist von Typ NVARCHAR(50)
Zum Beipsiel:
using (ClientFramework.SFS2009Entities db = new ClientFramework.SFS2009Entities())
{
string Klassenname = "A";
var query = from kk in db.Klassen
where kk.KlassenID == Klassenname
select kk;
Debug.WriteLine(query.First().KlassenID);
}
wenn ich aber stattdessen in Where Klausel
where kk.KlassenID == "A"
schreibe geht es.
Folgende Exception erscheint:
Fehler beim Ausführen der Befehlsdefinition. Details finden Sie in der internen Ausnahme.
Und die innere:
{"Die Datentypen 'ntext' und 'image' können in Klauseln vom Typ WHERE, HAVING, GROUP BY, ON oder IN nicht verwendet werden, es sei denn, diese Datentypen werden mit den Prädikaten LIKE oder IS NULL verwendet."}
Ich hoffe mir kann geholfen werden.
Vielen Dank schon einmal.
Na dann probier doch einfach mal:
var query = from kk in db.Klassen
where System.Data.Linq.SqlClient.SqlMethods.Like(kk.KlassenID, Klassenname)
select kk;
Hi, bei Like fliegt eine Exception:
'LINQ to Entities' erkennt die Methode 'Boolean Like(System.String, System.String)' nicht,.....usw.
Habe es danach mal mit Equals versucht, dabei kam aber wieder der Fehler den ich im ersten Eintrag beschrieb.
Habe mich bisher leider noch nicht so sehr mit Linq und konsorten beschäftigt...
So evtl: (sorry, du bist jetzt das Versuchskaninchen) 😉
var query = from kk in db.Klassen
where kk.KlassenID.Contains(Klassenname)
select kk;
Kein Problem, ich bin auch zur Zeit scheinbar mein eigenes Versuchskaninchen.
Ich habe 2 Datenbänke 1 SQL Express 2005, da hat alles mit dem Entity Framework auf Anhieb geklappt. Und die SQL Compact 3.5 DB. Diese wird nicht komplett vom EF unterstützt und immer wieder irgendwelche Fehler. Wie dieser hier.
Hmm... ich habe mich auch mal mit der CE versucht und hab sie dann gleich in die Tonne getreten als ich eine normale Abfrage mit den ach so tollen SQL Server kompatiblen Befehlen schreiben wollte 😉
Wenn es nicht unbedingt eine Embedded Datenbank sein muss bleib bei der Express Edition. Die ist nämlich wirklich mal cool...
Kann leider nicht ausweichen. Ich habe es jetzt erstmal so gemacht, dass ich alle Objekte der Tabelle ohne where abrufe in einer Liste speicher und diese dann mit einem Linq Query filter. Es funktioniert zwar ist aber für größere Datenmenge absolut ungeeignet. Zum glück habe ich in dieser Tabelle nur max 15 Datensätze.
Bin also immer noch für jede Hilfe dankbar.