Отходя все больше и больше от написания SQL для моих приложений, я решил попробовать Entity Framework. Однако я столкнулся с чем-то, что, по моему мнению, заставляет меня писать больше кода, чем я считаю строго необходимым.
Когда я получил доступ к некоторым навигационным свойствам, я обнаружил, что все отношения «многие к одному» (простые ссылки) были нулевыми, а все отношения «один ко многим» и «многие ко многим» (EntityCollections) были пустыми.
Например: у меня есть пользователь со ссылкой на группу. Когда я выбрал пользователя с помощью простого выбора по идентификатору, свойство Group имеет значение null. Если я хочу получить доступ к группе, я должен загрузить ее вручную (используя User.GroupReference.Load ()). Поэтому я добавил метод GetGroup () в User, который проверяет, загружена ли уже группа, и, если нет, делает, а затем возвращает группу.
Теперь это приведет к множеству очень похожих методов для всех навигационных свойств. И все это приводит к тому, что навигационные свойства не используются, теперь используются только мои собственные методы Get "PropertyName" ().
Я не хочу расширять свои запросы (linq to entity) для немедленной загрузки всех этих свойств, потому что сначала не всегда известно, что нужно. И кроме того, это вызовет множество запросов.
Есть ли способ настроить Entity Framework для загрузки этих объектов, когда они отсутствуют? Поэтому, когда я получаю доступ к User.Group и группа еще не загружена, она загружается автоматически? Или я застрял, используя собственный метод Get "PropertyName" (), если я пытаюсь загружать объекты только по требованию (или "точно в срок")?
Дополнительная информация: я использую VS2008 SP1 с .NET 3.5 SP1. Entity Framework, который я использую, поставляется с ним.