| 

.NET C# Java Javascript Exception

2
Hallo Zusammen

Ich möchte das Entity 4 Framework in meine Anwendung integrieren. Ich habe auch schon einige bausteine fertig. Jetzt hänge ich aber an folgendem Problem.



Meine Abfrage direkt über SQL
SELECT DISTINCT D.ID, D.Name, D.CreateDate, D.UpdateDate, D.Active FROM Domain AS D
LEFT JOIN dbo.Domain2Host AS D2H ON (D.ID = D2H.FK_DomainID)
LEFT JOIN dbo.Host AS H ON (D2H.FK_HostID = H.ID)
LEFT JOIN dbo.Host2IP AS H2I ON (H.ID = H2I.FK_HostID)
LEFT JOIN dbo.IP ON (H2I.FK_IPID = IP.ID)
WHERE IP.Address LIKE @IPAddres


Mein erster versuch mit EF4
verusacht leider 3 Abfragen ich hätte gerne eine mit Joins...
entities.IP.Where(ip => ip.Address == "74.125.87.99").First().Host.First().Domain.AsEnumerable();


Mein zweiter versucht
Das macht auch nicht was ich möchte :(
var query = from ip in entities.IP
join domain in entities.Domain on ip.Host.FirstOrDefault() equals domain.Host.FirstOrDefault()
where ip.Address == "74.125.87.99"
select domain;


Gibt es die möglichkeit das mit Joins zu lösen mit EF4?
News:
23.03.2011
live2 51 2
1
Eine vage Vermutung: Es liegt vielleicht an den First() und FirstOrDefault() calls.
Du kannst deinen ursprünglichen Join auch ohne abbilden. Im SQL benutzt dus ja auch nicht.
bugbite 23.03.2011
Das war auch mein erster gedanke nur sehe ich die Relation Tabellen nicht im entities Objekt???
live2 23.03.2011
Schon klar eine n:m relation wird ja auch zu einer asaoziation Zweier Klassen aufgelöst ;)
Optimiere einfach dahingehend dass die First() calls rausfliegen damit zwingst du linq auch nicht Daten abzuholen
bugbite 23.03.2011
1 Antwort
1
So jetzt hab ich die Lösung zum Problem, leider erstellt VS2010 die Relation Tabellen nicht wenn sie nur ForeignKeys enthaltet. Habe jetzt einfach eine zusätzliche spalte in der Relation Tabelle erstellt. Somit sind die Relation Tabellen auch Sichtbar und ich kann sie mit joins verbinden.

var query = from domain in this.bll.entities.Domain
join d2h in this.bll.entities.Domain2Host
on domain.ID equals d2h.FK_DomainID
join h2i in this.bll.entities.Host2IP
on d2h.FK_HostID equals h2i.FK_HostID
join ip in this.bll.entities.IP
on h2i.FK_IPID equals ip.ID
where ip.Address == IPAddress
select domain;



24.03.2011
live2 51 2

Stelle deine .net-Frage jetzt!