There are a number of things in Entity Framework where if you don't know exactly what to expect, you will get bad data.
The lack of implicit lazy loading is one of those things for developers who have come to expect that behavior based on their experience with other ORMs.
That was intentional on the part of the development team.
But here's one that probably wasn't.
David Yack noticed that if you use Include with an explicit cast, the include doesn't work. It doesn't throw an error, just doesn't' do what it should.
Here's the difference
from cust in context.Cutomers.Include("Orders")
vs.
from cust as Customer in context.Customers.Include("orders")
(that's: from Customer cust in context.Customers.Include("orders") for you C# folks)
He emailed me last night and asked if I knew of a problem with Include in SP1, but in the first email didn't mention the explicit cast so I was baffled why he was having problems with Include.
Then he emailed back and showed his query with the cast. He had discovered that it was only when he was casting that the problem occurred.
Oooh that's bad. I know that Entity Framework is obsessive in it's explicitness but this seems pretty extreme.
The cast says "I want a Customer" so the results only bring back a customer, not a graph.
The result is that you will get no orders and go on your merry way thinking that there were no orders in the system.
It's really bad behavior because developers will have no clue.
Good work finding it Dave!