Autor Beitrag
Habak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Sa 13.11.10 16:53 
Guten Tag zusammen,

nachdem ich in zwei Fachbüchern und beim "googlen" nicht fündig geworden bin, habe ich folgende Frage:
Kann man überhaupt in einer LINQ-Abfrage zwei DataContext Bezüge verwenden ?
Ich bekomme immer die Fehlermeldung:
"Die Abfrage enthält Verweise auf Elemente, die in einem anderen Datenkontext definiert sind."

Daher nehme ich an, dass funktioniert so nicht.
Was ist denn hier die Alternative ?

Anbei noch der c#-Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
RegionenDBDataContext Regio1 = new RegionenDBDataContext();
LänderDBDataContext Länder1 = new LänderDBDataContext();
var ListeLänder = from LL in Länder1.Länder
                               from LR in Regio1.Regionen
                               where LR.GebietID == 99999
                               select new { LL.Land };

foreach (var Länder in ListeLänder)

         {
                 Console.WriteLine(order.Land);
         }


Vielen Dank im voraus.

Habak

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 13.11.10 17:03 
:welcome: in der EE!

Das kann so tatsächlich schlecht funktionieren, an welche der beiden Verbindungen sollte denn die SQl-Query geschickt werden?
Getrennte DCs für zwei abhängige Tabellen ist eine merkwürdige Idee - stehen die denn nicht in der gleichen DB?

_________________
>λ=
Habak Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Sa 13.11.10 17:50 
Hallo Kha,

es sind zwei Tabellen aus einer Datenbank.
Aus der einen Tabelle muss ich mehrere ID´s filtern und dann als Filter in der anderen Tabelle verwenden.
Wie mache ich das denn ?
Vielen Dank.

Habak
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 13.11.10 18:17 
user profile iconHabak hat folgendes geschrieben Zum zitierten Posting springen:
es sind zwei Tabellen aus einer Datenbank.
Dann gibt es keinen Grund, mehr als einen DC zu verwenden. Und wenn die Foreign-Key-Relationen richtig angelegt werden, gibt es auch keinen Grund, den Join selbst zu bauen, da der Designer Navigation Properties angelegt haben sollte.

ausblenden C#-Quelltext
1:
dc.Länder.Where(l => l.Regionen.Any(r => regionenIDs.Contains(r.ID))					

Ich hoffe mal, das geht so wirklich durch EF durch :mrgreen: .

_________________
>λ=
Habak Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Sa 13.11.10 21:14 
Hallo Kha,

vielen Dank, aber das klappt bei mir so leider nicht. Ich darf kein ANY oder ähnliches verwenden, dass wird gleich angemeckert.
Vielleicht darf ich mein Problem in ein paar Worten beschreiben:
In der Datenbank "DokuDB" habe ich eine Tabelle "Gebiete", die folgende Felder ausweist: GebietID und Gebiet (z.B. Europa). Weiterhin gibt es in der Datenbank die Tabelle "Regionen", die die GebietID, eine RegionID und die Regionen (z.B. Mitteleuropa, usw.) beeinhalten. Weiterhin gibt es dann eine Tabelle "Länder", die auch die RegionID, eine Länder ID und die Länder (z.B. für Mitteleuropa: Deutschland, Österreich, etc) beinhalten.
Nun möchte ich folgende Fall lösen:
Wähle ich ein Gebiet aus (z.B. Europa), dann möchte ich gerne alle zugehörigen Länder anzeigen. D.h. für ein Gebiet gibt es mehrere Regionen und diese Regionen muss ich in der Tabelle Länder abfragen.
Wie bekomme ich das in einer Windows-Form-Anwendung umgesetzt?

Vielen Dank.

Habak

P.S.: bin leider von SQL oder Datenbanken völlig unbeleckt (bitte um Verständnis)
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 13.11.10 21:25 
Das wäre ja einfach from region in gebiet.Regionen from land in region.Länder select land, wenn wie gesagt die FKs passen. Solltest du noch überhaupt keine Relationen in der DB haben, müsstest du dich in dieser Richtung erst einmal einlesen, eine Erklärung hier würde den Rahmen sprengen :) .

_________________
>λ=
Habak Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Sa 13.11.10 21:44 
die FK´s habe ich erzeugt; zumindest sehe ich dies im Datenbankdiagramm und unter Datenquelle da dort in der Tabelle Regionen die Tabelle Land (eingerückt) auch "enthalten" ist.
Oder sehe ich das falsch?
Nur wenn ich Deine Abfrage umsetze, gibt es den Teil "region.Länder" nicht; das wird durch das InteliSense nicht angeboten.
Kannst Du sagen was da falsch läuft.
Danke.

Habak
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 13.11.10 22:10 
Ehrlich gesagt habe ich gerade keine Ahnung, wie das im Designer aussehen muss oder wie sich das einstellen lässt, aber dazu gibt es ja Google: So wie hier im zweiten Screenshot müsste das wohl sein.

/edit: Mir fällt gerade auf, dass du noch gar nicht verraten hast, ob du überhaupt das Entity Framework einsetzt ;) .

_________________
>λ=

Für diesen Beitrag haben gedankt: Habak
Habak Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Sa 13.11.10 22:29 
Hallo Kha,

ehrlich gesagt weiss ich nicht, was unter dem "Entity Framework" zu verstehen ist.
Aber ich habe den Fehler nun gefunden: in den "dbml"-Dateien waren die Beziehungen nicht eingetragen (warum man das zig mal an unterschiedlicher Stelle machen muss, bleibt mir ein Geheimnis).
Wenn ich dort nun die Regionen und die Länder Tabelle verknüpfe, dann klappt auch "region.Länder".

Vielen Dank. Du warst eine große Hilfe.

Noch einen schönen Abend.

Gruß Habak

P.S.: Damit wäre das Thema für mich erledigt.