Entity Framework: загрузка множества в одну сущность - PullRequest
2 голосов
/ 09 февраля 2009

Скажем, у меня есть объект роли и объект сайта. Теперь у одного сайта много ролей, поэтому в классе Role есть свойство Site, которое представляет эти отношения. Если бы я хотел роли для сайта, я бы сделал это:

Site.Roles.Load()

Проблема в том, что свойство Site класса Role - это не коллекция, а всего лишь одна сущность, поэтому метод Load отсутствует:

currentRole.Site //????

Так что, когда роль загружена, Сайт становится пустым, и нет другого способа получить сайт, кроме как запросить запрос к семейству ролей, чтобы получить идентификатор сайта, получить сайт из семейства сайтов и, наконец, установить в собственность сайта currentRole.

Должен быть лучший способ? Нужно ли форсировать какое-то соединение в запросе? Похоже, это будет сгенерировано кодом так же, как ведет себя метод Load.

Ответы [ 2 ]

6 голосов
/ 10 февраля 2009

На самом деле, доступ к нему не будет автоматически загружать его. Вы можете включить связанную сущность в один запрос, используя метод Include, но вы также можете использовать метод Load со ссылками, как вы можете это делать с коллекциями - это не просто свойство ссылки CLR, а свойство EntityReference, параллельное CLR. ссылка на сущность. Его имя совпадает с ссылкой CLR, но с прикрепленным словом «ссылка». Итак, вы можете сказать:

currentRole.SiteReference.Load();

Для чего стоит, в выпуске EF VS 2010 / .net 4.0 также будет возможно установить свойство для ObjectContext, которое включит неявную ленивую загрузку, так что доступ к ссылке clr автоматически просто загрузит если он еще не загружен.

Danny

1 голос
/ 09 февраля 2009

Доступ к нему загрузит его. Если вы хотите, чтобы он загружался явно, в запросе объекта должен быть метод .Include ().

db.Sites.Include("Role").ToList();

Вот некоторая документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...