小编Ton*_*nte的帖子

实体框架5:如何外连接表值函数

我试图在我的LINQ查询中外连接一个带有内联表值函数的表,但是我在运行时遇到了一个查询编译错误:

"查询尝试通过嵌套查询调用'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();
Run Code Online (Sandbox Code Playgroud)

功能定义如下:

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 …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-5

5
推荐指数
1
解决办法
1077
查看次数