Ich versuche, eine Tabelle mit einer Inline-Tabellenwertfunktion in meiner LINQ-Abfrage zu Outer-Joins, aber ich habe einen Abfrage Übersetzungsfehler zur Laufzeit:Entity Framework 5: Wie Outer Join Tabellenwertfunktion
" Die Abfrage hat versucht, 'OuterApply' über eine verschachtelte Abfrage aufzurufen, 'OuterApply' verfügt jedoch nicht über die entsprechenden Schlüssel. "
Meine Linq-Anweisung sieht wie folgt aus:
var testQuery = (from accountBase in ViewContext.AccountBases
join advisorConcatRaw in ViewContext.UFN_AccountAdvisorsConcatenated_Get()
on accountBase.AccountId equals advisorConcatRaw.AccountId into advisorConcatOuter
from advisorConcat in advisorConcatOuter.DefaultIfEmpty()
select new
{
accountBase.AccountId,
advisorConcat.Advisors
}).ToList();
Die Funktionsdefinition lautet wie folgt:
CREATE FUNCTION dbo.UFN_AccountAdvisorsConcatenated_Get()
RETURNS TABLE
AS
RETURN
SELECT AP.AccountId,
LEFT(AP.Advisors, LEN(AP.Advisors) - 1) AS Advisors
FROM ( SELECT DISTINCT
AP.AccountId,
( SELECT AP2.PropertyValue + ', '
FROM dbo.AccountProperty AP2 WITH (NOLOCK)
WHERE AP2.AccountId = AP.AccountId
AND AP2.AccountPropertyTypeId = 1 -- Advisor
FOR XML PATH('')) AS Advisors
FROM dbo.AccountProperty AP WITH (NOLOCK)) AP;
Ich kann die Verbindung direkt in SQL erfolgreich wie folgt durchführen:
SELECT ab.accountid,
advisorConcat.Advisors
FROM accountbase ab
LEFT OUTER JOIN dbo.Ufn_accountadvisorsconcatenated_get() advisorConcat
ON ab.accountid = advisorConcat.accountid
Hat jemand ein Arbeitsbeispiel von linker äußerer Verbindung einer Inline TVF zu einer Tabelle in LINQ an Entitäten - oder ist das ein bekannter Defekt, etc? Danke vielmals.
Haben Sie das gleiche Problem, irgendeine Lösung? –
Immer noch keine Antwort von Microsoft - wird dieses Problem in der nächsten Version von EF behoben? –