私は次のエンティティモデルを持っています:従業員には会社があり、会社には従業員がいます。
以下のようにIncludeステートメントを使用する場合:
var query = context.Employees.Include(e => e.Company);
query.Dump();
関連するすべてのデータがデータベースから正しく取得されます。(Company テーブルで LEFT OUTER JOIN を使用)
System.Linq.Dynamic から GroupBy() を使用して Company.Name でグループ化すると、問題が発生します。インクルードが失われるため、Employees には Company データがありません。例:
var groupByQuery = query.GroupBy("new (Company.Name as CompanyName)", "it");
groupByQuery.Dump();
「クエリ」に適用されたインクルードを文字列コレクションとして簡単に取得して、次のように動的 GroupBy に含めることができる方法はありますか?
var groupByQuery2 = query.GroupBy("new (Company, Company.Name as CompanyName)", "it");
groupByQuery2.Dump();
ToString() 機能を使用して、次のような SQL コマンドを取得することを考えました。
string sql = query.ToString();
そして、RegEx を使用してすべての LEFT OUTER JOINS を抽出しますが、おそらくもっと良い解決策がありますか?