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 метод принудительно применяет заданный MergeOption параметром mergeOption . Дополнительные сведения см. в разделах Разрешение удостоверений, Управление состоянием и Отслеживание изменений.

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

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