Ich versuche, die folgende SQL-Abfrage in Linq zu reproduzieren und brauche bitte etwas Hilfe.Mehrere äußere Verknüpfung mit Linq mit 2 Joins zur gleichen Tabelle/Objekt. Habe die SQL, brauche die Linq zu Entity
select
dbo.Documents.DocId,
dbo.Documents.ReykerAccountRef,
dbo.Documents.ReykerClientId DocClientID,
CAAs.ClientId CAAClientIDCheck,
ClientData.FullName ClientFullName,
CAAs.IFAId,
AdvisorData.FullName AdvisorFullName
from dbo.Documents
left join
dbo.CAAs on dbo.Documents.ReykerAccountRef = dbo.CAAs.AccountRef
left join
dbo.hmsProfileDatas AS ClientData
on
dbo.CAAs.ClientId = ClientData.ReykerClientID
left join
dbo.hmsProfileDatas AS AdvisorData
on
dbo.CAAs.IFAId = AdvisorData.ReykerClientID
Ich versuche, auf den gleichen Tisch für einen Kunden Fullname und das andere nach einem Berater Fullname zweimal, einmal zu verknüpfen.
Die grundlegende SQL ich in Linq produzieren wollen, ist
select table1.*,table2.*,a.Fullname, b.Fullname
from table1
left join
table2 on table1.t2Id = table2.Id
left join
table3 AS a
on
table2.t3Id1 = table3.id1
left join
table3 AS b
on
table2.t3Id2 = table3.id2
So Tisch ein bis table2 verbunden ist und table2 hat zwei Fremdschlüssel (t3Id1 und t3Id2) zu verschiedenen Bereichen (ID1 und ID2) Table3.
Dies ist, was ich versucht habe, einige Leitlinien zu folgen, aber es gibt nichts zurück! Was läuft falsch?
var results3 = from doc in DataContext.Documents
from caa
in DataContext.CAAs
.Where(c => c.AccountRef == doc.ReykerAccountRef)
.DefaultIfEmpty()
from cpd
in DataContext.hmsProfileDatas
.Where(pdc => pdc.ReykerClientID == caa.ClientId)
.DefaultIfEmpty()
from apd
in DataContext.hmsProfileDatas
.Where(pda => pda.ReykerClientID == caa.IFAId)
.DefaultIfEmpty()
select new DocumentInList()
{
DocId = doc.DocId,
DocTitle = doc.DocTitle,
ReykerDocumentRef = doc.ReykerDocumentRef,
ReykerAccountRef = doc.ReykerAccountRef,
ClientFullName = cpd.FullName,
AdvisorFullName = apd.FullName,
DocTypeId = doc.DocTypeId,
DocTypes = doc.DocTypes,
DocDate = doc.DocDate,
BlobDocName = doc.BlobDocName,
UploadDate = doc.UploadDate,
};
Hast du ‚get‘ die SQL von Linq-Abfrage und versuchen Sie es in der Db – NSGaga
Nr ich dies gegen SQL Azure bin mit und haben nicht funktioniert, wie die SQL zu sehen. Es gibt kein Profiling. Überprüfen Sie das jetzt auf dem Management-Panel! – NER1808
aber Sie könnten es immer noch lokal auf jedem Db, CE zum Beispiel testen - empfohlen, um Ihre Sachen gerade zu bekommen. Mit EF/CF ist es einfach, Dinge zu "bewegen", also warum nicht. – NSGaga