2016-07-17 8 views
1

私はGET {id}に関係を含めるオプションがあります。EF:IIncludeableQueryableを動的に構築する

 var account = _context.Accounts.Where(a => a.AccountId == id); 
     if (withActiveSubscription) 
     { 
      account = account.Include(a => a.ActiveSubscription); 
      if (withCharges) 
      { 
       account = account.ThenInclude(s => s.Charges); 
      } 
     } 

しかし、私は「シンボル 『ThenInclude』を解決できません」を取得:

は、私はこのような何かをしたいです。 私は

  if (withCharges) 
      { 
       account = account.Include(a => a.ActiveSubscription).ThenInclude(s => s.Charges); 
      } 

に変更、それによってその問題を解決することができます。しかし、それは私がaccount.Include(a => a.ActiveSubscription)を複製するので、悪く見えるのです。 これはどうすればいいですか? (私はEF-コアを使用しています) おかげ

答えて

1

ThenInclude.Include(...)によって返されるタイプの拡張方法として利用できるようになります。そのタイプは単にIQueryable<T>ではなく、accountに割り当てることで、余分な機能のコンパイル時の知識を取り除くことができます。それを保持するには、accountと異なるタイプの特別なヘルパー変数に格納します。

関連する問題