Sto tentando di outer join una tabella con una funzione con valori di tabella in linea nella mia query LINQ, ma ottengo un errore di compilazione di query in fase di esecuzione stimato:Entity Framework 5: come Outer Join Tabella delle funzioni
" La query ha tentato di chiamare "OuterApply" su una query nidificata, ma "OuterApply" non aveva le chiavi appropriate. "
La mia dichiarazione LINQ si presenta così:
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();
La definizione di funzione è la seguente:
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;
posso eseguire correttamente il join direttamente in SQL come segue:
SELECT ab.accountid,
advisorConcat.Advisors
FROM accountbase ab
LEFT OUTER JOIN dbo.Ufn_accountadvisorsconcatenated_get() advisorConcat
ON ab.accountid = advisorConcat.accountid
Qualcuno ha un esempio di lavoro di sinistra esterno che unisce un inline TVF a un tavolo in LINQ alle entità - o si tratta di un difetto noto, ecc.? Grazie molto.
Hanno lo stesso problema, qualche soluzione? –
Ancora nessuna risposta su questo da Microsoft - questo problema verrà risolto nella prossima versione di EF? –