Entity Framework and CROSS/OUTER APPLY

三世轮回 提交于 2019-12-01 03:38:36

In LINQ 2 SQL this always results in an APPLY:

from t1 in tab1
from t2 in tab2.Where(t2 => t2.SomeCol == t1.SomeCol).Take(1)
select new { t1, t2 }

In EF this will either fail, or also result in an APPLY (I don't know which one). This is a correlated join which requires an APPLY on the SQL side.

Something like this would generate an outer apply:

var ListLocation = from d in dc.Department                               
                         select new DepartmentViewModel()
                         {
                            LocationID = d.LocationID,
                            ManagerName = d.Managers.FirstOrDefault(p => p.ManagerId == id).Name

                          };

If it doesn't work you can always pass your own query if you're using EF:

var q2 = context.Departments.SqlQuery("Select ...");

Remember though that your provider has to be SQL Server 2005 and higher, EF does not support OUTER APPLY for Oracle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!