В1: Я что-то пропускаю, ленивая загрузка не работает?
Это работает, но в этом нет никакой магии - под вами создан прокси, который попытается получить значение свойства из базы данных для вас при первом доступе.
Для EF соединение с базой данных представлено контекстом, который вы в настоящее время автоматически располагаете в конце своего блока использования. Без подключения к базе данных EF не может лениво получить свойства и, следовательно, ленивая загрузка не будет работать.
Вам нужно будет поддерживать контекст в действии, пока вы не получите доступ ко всем свойствам, к которым вам нужен доступ для отложенной загрузки, или в качестве альтернативы нетерпеливо загрузить эти свойства.
Q2: Если я хочу явно загрузить все связанные дочерние объекты,
придется вызывать метод LoadProperty для всех свойств или там
есть какой-нибудь более простой способ?
Да, вы можете указать запрос Include()
для быстрого поиска свойств, в вашем случае это будет:
entity = context.FilterMasters
.Include("SQLQuery")
.SingleOrDefault(filter => filter.ID == ID);