Поделиться через


EntityReference<TEntity>.Load(MergeOption) Метод

Определение

Загружает связанный объект для этого объекта EntityReference<TEntity> с указанным параметром слияния.

public:
 override void Load(System::Data::Objects::MergeOption mergeOption);
public override void Load (System.Data.Objects.MergeOption mergeOption);
override this.Load : System.Data.Objects.MergeOption -> unit
Public Overrides Sub Load (mergeOption As MergeOption)

Параметры

mergeOption
MergeOption

Определяет, как должен происходит возврат объекта, если он уже существует в контексте объекта ObjectContext.

Исключения

Источник EntityReference<TEntity> имеет значение null.

-или-

Запрос возвращает больше одного связанного элемента.

-или-

Запрос возвращает нулевое количество связанных элементов, хотя ожидался возврат одного связанного элемента.

Комментарии

Этот метод используется для загрузки связанного объекта.

При загрузке доступ к связанному объекту осуществляется через свойство Value.

Чтобы явно загрузить связанные объекты, необходимо вызвать Load метод в связанном конце, возвращаемом свойством навигации. Для связи типа «один ко многим» вызовите метод Load для объекта EntityCollection<TEntity>, а для взаимно-однозначной связи — метод Load для объекта EntityReference<TEntity>. В результате данные связанного объекта будут загружены в контекст объекта. Когда запрос возвращает результаты, можно выполнить перечисление через коллекцию объектов с помощью foreach цикла (For Each...Next в Visual Basic) и условно вызвать Load метод в EntityReference<TEntity> свойствах и EntityCollection<TEntity> для каждой сущности в результатах.

Метод Load загружает связанные объекты из источника данных независимо от того, является ли IsLoaded метод true.

Примечание

Если метод Load вызывается во время перечисления foreach (C#) или For Each (Visual Basic), службы объектов пытаются открыть новый модуль чтения данных. Эта операция завершится ошибкой, если не был включен режим MARS путем задания multipleactiveresultsets=true в строке соединения. Кроме того, можно загрузить результат запроса в коллекцию List<T>. В результате модуль чтения данных будет закрыт, и появится возможность выполнять перечисление по коллекции для загрузки объектов, на которые существуют ссылки.

Этот метод вызывает внутренний RelatedEnd.ValidateLoad метод перед загрузкой связанного объекта, который проверяет, имеет ли вызов Load правильные условия. Метод RelatedEnd.ValidateLoad проверяет, что:

  • Допустимый ObjectContext объект существует.
  • Сущность не Deleted в состоянии .
  • MergeOption параметр for Load должен иметь значение NoTracking , если и только в том случае, если исходная сущность была NoTracking. Если исходная сущность была получена с помощью любого другого MergeOptionMergeOptionLoadобъекта , может быть любым, кроме NoTracking (например, сущность могла быть загружена с OverwriteChanges , а Load параметр может иметь значение ).AppendOnly
  • Если mergeOption имеет значение NoTracking, Load метод не вызывается для уже загруженной сущности и Load не вызывается для непустой, не отслеживаемой сущности RelatedEnd.

Если связанный объект уже загружен в ObjectContext, Load метод принудительно применяет заданный MergeOptionmergeOption параметром . Дополнительные сведения см. в разделах Разрешение удостоверений, Управление состоянием и Отслеживание изменений.

Применяется к

См. также раздел