Laden...

Entity Problem bei Abruf

Erstellt von John Sanson vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.484 Views
John Sanson Themenstarter:in
195 Beiträge seit 2006
vor 15 Jahren
Entity Problem bei Abruf

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.

2.760 Beiträge seit 2006
vor 15 Jahren

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;

John Sanson Themenstarter:in
195 Beiträge seit 2006
vor 15 Jahren

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.

2.760 Beiträge seit 2006
vor 15 Jahren

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;
John Sanson Themenstarter:in
195 Beiträge seit 2006
vor 15 Jahren

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.

2.760 Beiträge seit 2006
vor 15 Jahren

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...

John Sanson Themenstarter:in
195 Beiträge seit 2006
vor 15 Jahren

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.