Laden...

LinqToSql Join

Erstellt von chriss_2oo4 vor 13 Jahren Letzter Beitrag vor 13 Jahren 747 Views
C
chriss_2oo4 Themenstarter:in
103 Beiträge seit 2007
vor 13 Jahren
LinqToSql Join

Hi,

ich verwende den MSSQL 2008 Server, der mit hilfe des VS2008 und Linq2Sql sehr komfortabel verwaltet werden kann.

Ich bin bisher immer so vorgegangen:

  1. Neue LinqToSql Klasse zum Projekt hinzugefügt
  2. Benötigte Tabellen aus dem Datenbank-Explorer mit der Maus rübergezogen
  3. Ein Query erstellt und das wars auch schon
var query = from artikel in context.Artikel
select artikel;
List<Artikel> listArtikel = query.ToList<Artikel>();

So einfach geht dass dann bei einem Join nicht mehr? Muss ich dann meine eigene Klasse bauen, oder gibt es eine Möglichkeit dass mir das VS abnimmt?

Vielen Dank!
Gruß Chriss

1.433 Beiträge seit 2006
vor 13 Jahren

Nein, wenn Du die Tabellen weisst, die Du mit einem Join verbinden willst, dann musst Du beide Tabellen in das LinqToSQL reinziehen und den Join von Hand machen.

101 LINQ Samples

Bei mir habe ich als Beispiel nur zwei Entitäten genommen.

Der Code dafür sieht so aus:


            BurautaisDataContext context = new BurautaisDataContext();
            var resourceToDeviceJoin = from r in context.Resources
                                       join
                                           d in context.Devices on r.T_Id equals d.T_Id
                                       select new
                                       {
                                           d.NetBiosName,
                                           d.Os,
                                           r.T_Type
                                       };
            resourceToDeviceJoin.ToList().ForEach(e => Console.WriteLine(e.NetBiosName, e.Os, e.T_Type));

            Console.ReadKey();

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

C
chriss_2oo4 Themenstarter:in
103 Beiträge seit 2007
vor 13 Jahren

Hi schaedld,

vielen Dank für Deine ausfürhliche Antwort. Ich habe die Klassen mieinander verbunden. Ein erheblicher Vorteil ist jedoch, dass LinqToSql automaitsch eine klasse erstellt, z. B. Ressource. Somit kann ich mir ohne irgendwas zu coden eine Liste (ToList<Ressource>()) von einer Query zurückgeben lassen.

Bei einem Join habe ich keine Klasse RessourceToDevice o. Ä. Folgedessen kann ich das bei einem Join nicht mehr so einfach gestalten?

Danke!
Grüße Chriss

1.433 Beiträge seit 2006
vor 13 Jahren

Ausser Du hättest bereits eine View in der Datenbank, welche Deinen Join bereits dort ausführt. Dann hast Du auch in der Linq2ToSQL die Möglichkeit eine Tabelle "reinzuziehen".

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

C
chriss_2oo4 Themenstarter:in
103 Beiträge seit 2007
vor 13 Jahren

Was natürlich eine sehr gute Idee wäre... 👍