私は私のLINQクエリのインラインテーブル値関数を使用してテーブルを外部結合しようとしていますが、私は、実行時にクエリのコンパイルエラーが表示されます:Entity Frameworkの5:にどのように外部結合表値関数
"クエリはネストされたクエリで 'OuterApply'を呼び出そうとしましたが、 'OuterApply'には適切なキーがありませんでした。
私のLINQ文は次のようになります。
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();
次のように関数の定義は次のとおりです。
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;
私は成功し、次のようにSQLに直接結合を実行することができます
SELECT ab.accountid,
advisorConcat.Advisors
FROM accountbase ab
LEFT OUTER JOIN dbo.Ufn_accountadvisorsconcatenated_get() advisorConcat
ON ab.accountid = advisorConcat.accountid
誰かが左外側のインライン結合の実例を持っていますかTVFをLINQのテーブルにエンティティに - またはこれは既知の欠陥などですか?どうもありがとう。
同じ問題、解決策はありますか? –
まだMicrosoftからの返信はありません - この問題はEFの次のバージョンで修正される予定ですか? –