首页 > 解决方案 > 如何在实体框架核心中转换外部应用

问题描述

我需要将整个 SQL 存储过程转换为 LINQ。有 OUTR Apply 部分,我需要将其转换为 LINQ。

例如——这里有更多连接

  LEFT JOIN Reason ON Reason.ReasonID = jd.ReasonID
             OUTER APPLY
        (
            SELECT s.SiteNameSimpleAddress
            FROM jobvisit jv
                 INNER JOIN site s ON jv.siteid = s.siteid
                                      AND jd.JobVisitID = jv.jobvisitid
        ) s

请注意,“jd.JobVisitID”存在于上面的另一个连接中,而不是外部应用中。看起来它参与了使左连接相等。

如果我在没有严厉批评的情况下写错了,请纠正我的问题

标签: tsqlentity-framework-core

解决方案


他们以下。由于您尚未发布您的模型,因此我试图以示意图方式展示。

var query = 
   ...
   join reason in ctx.Reasons on jd.ReasonId equals reason.ReasonId
   from address in (from jv in ctx.JobVisit
                    from s in ctx.Site
                      .Where(s => jv.SiteId == s.Siteid && jd.JobVisitID == jv.JobVisitID)
                    select s.SiteNameSimpleAddress).DefaultIfEmpty()
   ...

推荐阅读