Если предположить, что Ленивая загрузка выключена, а адреса не были в методе Включить , следующий бит кода вызовет исключение, поскольку адреса будут пустыми.
var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
if ( contact.ID == 5 ) {
Console.WriteLine( contact.Addresses.City );
}
}
Добавление вызова загрузки:
var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
if ( contact.ID == 5 ) {
contact.Addresses.Load()
Console.WriteLine( contact.Addresses.City );
}
}
Явно загружает адреса и поэтому исключает исключение.
Если Ленивая загрузка находится в первом блоке кода, также не будет возникать исключение, потому что EF будет загружать адреса для вас - без каких-либо явных вызовов.
Надеюсь, это немного поможет ...