Código da estrutura da entidade primeiro - o carregamento ansioso não está funcionando como o esperado?

Eu tenho as seguintes classes POCO do Entity Framework:

public class Customer
{
    public int Id {get;set;}
    public string Name {get;set;}

    public virtual ICollection<Order> Orders {get;set;}
}

public class Order
{
    public int Id {get;set;} 
    public int CustomerId {get;set;}
    public int OrderTypeId {get;set;}

    public virtual OrderType Type {get;set;}
    public virtual Customer Customer {get;set;}
} 

public class OrderType 
{
    public int Id {get;set;}
    public virtual ICollection<Order> Orders {get;set;}
}

O problema é que, quando eu devolver meuICollection<Order> Estou recebendo oOrderestá tudo bem, mas oOrderType propriedade doOrder não está sendo preenchido. Meu pedido conterá os seguintes detalhes:

Id:          1
CustomerId:  1
Customer:    Populated
OrderTypeId: 3
Type:        null        // Never returned

Meu código de mapeamento é semelhante ao seguinte:

public void ConfigureOrder(ModelBuilder builder)
{
    // Mapping from Order -> Customer
    builder.Entity<Order>()
        .HasRequired(x => x.Customer)
            .WithMany(x => x.Orders)
                .HasConstraint((order, cust) => order.CustomerId == cust.Id);

    // Mapping from Order -> OrderType
    builder.Entity<Order>()
        .HasRequired(x => x.OrderType)
            .WithMany(x => x.Orders)
                .HasConstraint((order, type) => order.OrderTypeId == type.Id);
}

Desativei o carregamento lento no meu contexto:

public Context(string connectionString)
    : base(connectionString)
{
    ObjectContext.ContextOptions.LazyLoadingEnabled = false;
}

Então, para retornar os dados no meu repositório, eu uso oInclude método deSystem.Data.Entity:

var query = from item in context.Customers
                .Include(x=> x.Orders)
            where item.Id == customerId
            select item;

Eu estava assumindo isso porque não podia especificarOrders.OrderType, esse era o problema, então tentei algumas variações:

1 -> .Include(x=> x.Orders.FirstOrDefault().OrderType)
2 -> .Include("Orders")
3 -> .Include("Orders")
     .Include("Orders.OrderType")

Mas nunca consigo obter a propriedade OrderType a ser retornada, a menos que eu apenas carregue o Order diretamente:

var query = from item in context.Orders
                .Include(x=> x.OrderType)
            select item;

Esse código retornará corretamente o OrderType dentro do pedido.

questionAnswers(1)

yourAnswerToTheQuestion