Autor Beitrag
bibi1911
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 20.03.09 08:37 
Hallo,

ich verwende das neue Entity Framework.
Mit diesem habe ich für zwei verschiedene DBs (und daraus bestimmte Tabellen)Entitäten erstellt.
Jetzt habe ich folgende Linq Anweisung geschrieben:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//Dies muss ich machen damit ich diese Entität verwenden kann (direkt zwei 
//Entitäten aus verschiedenen DBs kann man nicht einfach verwenden
//medien wurde mittels MedienEntities medien = new MedienEntities
//(connectionString) erzeugt
var geo = new List<me_geo>(medien.me_geo);

//archiv ist eine andere Entität angelegt mittels ArchivEntities archiv = new 
//ArchivEntities(connectionString); 
           var query = (from w in archiv.wa_archiv_treffer
                                    join g in geo on wa.kartentyp equals g.kartentyp
                                    select new Archiv {archivID = w.archiv_id, auflage = w.auflage, geoCode =w.geo_code});


kartentyp ist vom Typ short.
Ich bekomme beim Ausführen leider immer diese Exception:
{"Es kann kein konstanter Wert des Typs 'System.Collections.Generic.IEnumerable`1' erstellt werden. In diesem Kontext werden nur primitive Typen ('wie z. B. 'Int32', 'String' und 'Guid'') unterstützt."}.
Kann man keine short verwenden??
Ich benötige leider öfter where und join die auf elemente vom typ short zugreifen.
Es muss doch irgendwie eine Möglichkeit geben?!

Danke schon mal!

Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 20.03.09 13:11 
:welcome:

In der Fehlermeldung steht doch überhaupt nichts von short ;) ? EF kann deine geo-Liste unmöglich in SQL übersetzen, weil es so etwas wie ein Array in SQL einfach nicht gibt. Du musst also wohl oder übel für jedes Element in der Liste eine einzelne Query abfeuern.
Ich arbeite nicht mit dem EF, aber es könnte etwa so aussehen:

ausblenden C#-Quelltext
1:
2:
3:
4:
from g in geo // Linq to Objects!
from w in archiv.wa_archiv_treffer
where w.kartentyp == g.kartentyp
select new Archiv {archivID = w.archiv_id, auflage = w.auflage, geoCode =w.geo_code};

_________________
>λ=