Left Join Entity Framework
Werde ich in den Papierkorb, Entity Framework 5! Ich verbrachte zwei Tage zu finden, die Lösung aus dem web, aber nichts gefunden!
Habe ich versucht einen einfachen left join von Tabelle Kunstwerke und EndValidities mit der Eingabe IDFondazione als 2620
var query = from art in db.Artworks
join endVal in db.EndValidities.DefaultIfEmpty()
on art.ID_Dtsl equals endVal.IDdtsl
where art.ID_Cdgs == IDFondazione
select new SchedaOpera()
{
Cdscheda = art.Cdscheda,
Confirmed = art.FGconfermata,
DSimmagine = art.DSimmgine,
Dtsf = art.Dtsf,
Dtsi = art.Dtsi,
Dtsl = endVal != null ? endVal.Dtsl : "",
Iscr = art.Iscr,
Misa = art.Misa,
Ldcn = art.Ldcn,
Ldcs = art.Ldcs,
Misd = art.Misd,
Misl = art.Misl,
Misn = art.Misn,
Misp = art.Misp,
Miss = art.Miss,
Pvcc = art.Pvcc,
Pvcp = art.Pvcp,
Sgtt = art.Sgtt
};
Den herrlichen entity framework weiterhin produzieren
SELECT [Extent1].[ID_Dtsl] AS [ID_Dtsl], [Extent1].[CDscheda] AS [CDscheda],
[Extent1].[FGconfermata] AS [FGconfermata],
[Extent1].[DSimmagine] AS [DSimmagine],
[Extent1].[DS_DTSF] AS [DS_DTSF],
[Extent1].[DS_DTSI] AS [DS_DTSI],
CASE WHEN (cast(1 as bit) <> cast(0 as bit)) THEN [Extent2].[DSdtsl] ELSE N'_' END AS [C1],
[Extent1].[DS_ISCR] AS [DS_ISCR],
[Extent1].[NR_MISA] AS [NR_MISA],
[Extent1].[DS_LDCN] AS [DS_LDCN],
[Extent1].[DS_LDCS] AS [DS_LDCS],
[Extent1].[NR_MISD] AS [NR_MISD],
[Extent1].[NR_MISL] AS [NR_MISL],
[Extent1].[NR_MISN] AS [NR_MISN],
[Extent1].[NR_MISP] AS [NR_MISP],
[Extent1].[NR_MISS] AS [NR_MISS],
[Extent1].[FGpubblicata] AS [FGpubblicata],
[Extent1].[DS_PVCC] AS [DS_PVCC],
[Extent1].[DS_PVCP] AS [DS_PVCP],
[Extent1].[DS_SGTT] AS [DS_SGTT]
FROM [dbo].[TPD_OPERE] AS [Extent1]
INNER JOIN [dbo].[TSA_DTSL] AS [Extent2] ON [Extent1].[ID_Dtsl] = [Extent2].[IDdtsl]
WHERE [Extent1].[CD_CDGS] = '2620'
Du musst angemeldet sein, um einen Kommentar abzugeben.
DefaultIfEmpty
im Entity Framework funktioniert nur auf der Navigations-Eigenschaften. Andernfalls sollten Sie die VerwendungGroupJoin
, die umfassende syntax wird erreicht, indemjoin
...into
. Sehen dieses hervorragende post für mehr details.So Ihre Abfrage könnte (GroupJoin):
Ist der Unterschied in der Anweisung wählt
art
Objekte und eine Sammlung vonendVal
Objekte proart
Objekt. Also dieDtsl
Eigenschaft sollte einSelect
aufendVal.Dtsl
produzieren eine Sammlung vonDtsl
Werte. Die collection leer ist (keine Elemente), die für den outer join.Oder, wenn es die navigation Eigenschaft
Artwork.EndValidities
:Meiner Demo getestet in linqpad, können Sie die left-outer-join von zwei Tabellen wie folgt:
EndValidity
Eigenschaft in Kunstwerke... Können Sie nicht ?Habe ich diesen funktionierenden code:-