我想为 Entity Framework 查询创建一些测试用例,这些查询肯定会生成包含 CROSS APPLY 或 OUTER APPLY 运算符的 SQL 命令。
有人可以展示出现此类 SQL 查询的典型场景吗?
我想为 Entity Framework 查询创建一些测试用例,这些查询肯定会生成包含 CROSS APPLY 或 OUTER APPLY 运算符的 SQL 命令。
有人可以展示出现此类 SQL 查询的典型场景吗?
在 LINQ 2 SQL 中,这总是导致APPLY
:
from t1 in tab1
from t2 in tab2.Where(t2 => t2.SomeCol == t1.SomeCol).Take(1)
select new { t1, t2 }
在 EF 中,这要么失败,要么导致APPLY
(我不知道是哪一个)。这是一个相关连接,需要APPLY
在 SQL 端使用。
这样的事情会产生一个外部应用:
var ListLocation = from d in dc.Department
select new DepartmentViewModel()
{
LocationID = d.LocationID,
ManagerName = d.Managers.FirstOrDefault(p => p.ManagerId == id).Name
};
如果它不起作用,如果您使用的是 EF,您始终可以传递自己的查询:
var q2 = context.Departments.SqlQuery("Select ...");
请记住,尽管您的提供程序必须是 SQL Server 2005 或更高版本,但 EF 不支持 OUTER APPLY for Oracle