我想爲Entity Framework查詢創建一些測試用例,這些查詢肯定會生成包含CROSS APPLY或OUTER APPLY運算符的SQL命令。實體框架和CROSS/OUTER APPLY
有人可以顯示這些類型的SQL查詢出現的典型場景嗎?
我想爲Entity Framework查詢創建一些測試用例,這些查詢肯定會生成包含CROSS APPLY或OUTER APPLY運算符的SQL命令。實體框架和CROSS/OUTER APPLY
有人可以顯示這些類型的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
(我不知道是哪一個)。這是一個相關連接,它需要SQL端的APPLY
。
像這樣的東西會產生一個外部應用:
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不支持針對Oracle的OUTER APPLY
謝謝!這給了我一個CROSS APPLY查詢。另外,如果我使用Take(2).DefaultIfEmpty(),則會創建一個OUTER APPLY查詢。 – tamasf 2013-05-12 19:05:52