Можно ли связать основную / дочернюю запись, используя L2S или EF? - PullRequest
0 голосов
/ 23 июля 2011

Редактировать: я ограничен .Net 3.5 ...

У меня есть два объекта / коллекции, извлеченные из хранимой процедуры в Linq to Sql (я мог бы использовать EF, если потребуется). Они связаны с отношением 1 ко многим как в базе данных, так и в моей модели базы данных. Могу ли я связать эти два объекта так, чтобы я мог получить к ним доступ следующим образом:

ParentObject.ChildObjects.FirstOrDefault().Property

... не возвращаясь в базу данных?

1 Ответ

0 голосов
/ 23 июля 2011

Да, есть способ указать загрузку отношений в LINQ to SQL .. что-то вроде следующего должно работать.

partial void OnCreated() {
    DataLoadOptions options = new DataLoadOptions();
    options.LoadWith<ParentObject>(o => o.ChildObjects);
    this.LoadOptions = options;
}

Это указывает параметры в частичном OnCreate контекста данных, что хорошо, если вы хотите, чтобы правило сохранялось во всех экземплярах, но ваш случай может отличаться.

Я думаю, что есть некоторые тонкие нюансы с загрузкой более глубоких вложенных объектов только к вашему сведению.

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

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