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


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) службы объектов пытаются открыть новое средство чтения данных. Эта операция завершится ошибкой, если вы не включили несколько активных наборов результатов, указав multipleactiveresultsets=true в строке подключения. Вы также можете загрузить результат запроса в коллекцию List<T>. Это закрывает средство чтения данных и позволяет перечислить коллекцию для загрузки ссылочных объектов.

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

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

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

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

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