CROSS APPLYまたはOUTER APPLY演算子を含むSQLコマンドを確実に生成するEntity Frameworkクエリ用のテストケースをいくつか作成します。Entity FrameworkとCROSS/OUTERが適用されます
これらの種類のSQLクエリが表示される典型的なシナリオを誰かが表示できますか?
CROSS APPLYまたはOUTER APPLY演算子を含むSQLコマンドを確実に生成するEntity Frameworkクエリ用のテストケースをいくつか作成します。Entity FrameworkとCROSS/OUTERが適用されます
これらの種類の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
になる(私は知らないその1)。これは、相関結合であり、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