title: optional include with entity framework
body: <p>I'm working on a manager. Depending on the conditions some include must be enforced in order to get eager loading. But sometime I don't want all the data so the includes should not be applied.</p>
  
  <p>This is what I've got so far.</p>
  
  <pre><code>//INFO : public partial class Entities : DbContext
  
          var Database = new Entities();
          var result = Database.Department;
          if (includeHospitalEmployee) {  result.Include(a =&gt; a.HospitalEmployee); }
          if (includeQuickScans) {  result.Include(a =&gt; a.QuickScan);  }
  
          return result;
  </code></pre>
  
  <p>This doesn't work. The includes aren't loaded, although the <code>includebooleans</code> are set to true. Query results in;</p>
  
  <pre><code>SELECT 
      [Extent1].[Code] AS [Code], 
      [Extent1].[Discipline] AS [Discipline], 
      [Extent1].[FinancialCode] AS [FinancialCode], 
      [Extent1].[Name] AS [Name], 
      [Extent1].[DepartmentManagerId] AS [DepartmentManagerId], 
      [Extent1].[Show] AS [Show], 
      [Extent1].[Id] AS [Id]
  FROM [dbo].[Department] AS [Extent1]
  </code></pre>
  
  <p>But strange enough if i do this, all include are working </p>
  
  <pre><code>//INFO  : public partial class Entities : DbContext
          var Database = new Entities();
          var result = this.businessManagersFactory.Database.Department.Include(a =&gt; a.QuickScan);;
          if (includeHospitalEmployee) {  result.Include(a =&gt; a.HospitalEmployee); }
          if (includeQuickScans) {  result.Include(a =&gt; a.QuickScan);  }
  
          return result;
  </code></pre>
  
  <p>see the query </p>
  
  <pre><code>SELECT 
      [Project1].[C1] AS [C1], 
      [Project1].[Code] AS [Code], 
      [Project1].[Discipline] AS [Discipline], 
      [Project1].[FinancialCode] AS [FinancialCode], 
      [Project1].[Name] AS [Name], 
      [Project1].[DepartmentManagerId] AS [DepartmentManagerId], 
      [Project1].[Show] AS [Show], 
      [Project1].[Id] AS [Id], 
      [Project1].[C2] AS [C2], 
      [Project1].[Id1] AS [Id1], 
      [Project1].[StartDateTime] AS [StartDateTime], 
      [Project1].[EndDateTime] AS [EndDateTime], 
      [Project1].[Shared] AS [Shared], 
      [Project1].[ScanStatus] AS [ScanStatus], 
      [Project1].[Title] AS [Title], 
      [Project1].[Count] AS [Count], 
      [Project1].[Comment] AS [Comment], 
      [Project1].[HospitalEmployeeId] AS [HospitalEmployeeId], 
      [Project1].[DepartmentId] AS [DepartmentId]
      FROM ( SELECT 
          [Extent1].[Code] AS [Code], 
          [Extent1].[Discipline] AS [Discipline], 
          [Extent1].[FinancialCode] AS [FinancialCode], 
          [Extent1].[Name] AS [Name], 
          [Extent1].[DepartmentManagerId] AS [DepartmentManagerId], 
          [Extent1].[Show] AS [Show], 
          [Extent1].[Id] AS [Id], 
          1 AS [C1], 
          [Extent2].[Id] AS [Id1], 
          [Extent2].[StartDateTime] AS [StartDateTime], 
          [Extent2].[EndDateTime] AS [EndDateTime], 
          [Extent2].[Shared] AS [Shared], 
          [Extent2].[ScanStatus] AS [ScanStatus], 
          [Extent2].[Title] AS [Title], 
          [Extent2].[Count] AS [Count], 
          [Extent2].[Comment] AS [Comment], 
          [Extent2].[HospitalEmployeeId] AS [HospitalEmployeeId], 
          [Extent2].[DepartmentId] AS [DepartmentId], 
          CASE WHEN ([Extent2].[Id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2]
          FROM  [dbo].[Department] AS [Extent1]
          LEFT OUTER JOIN [dbo].[QuickScan] AS [Extent2] ON [Extent1].[Code] = [Extent2].[DepartmentId]
      )  AS [Project1]
      ORDER BY [Project1].[Code] ASC, [Project1].[C2] ASC
  </code></pre>
  
  <p>Why is this behaviour and how to get it working properly?</p>
  
  <p>regards</p>