EntityReference<TEntity>.Load(MergeOption) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Carrega o objeto relacionado para esse EntityReference<TEntity> com a opção de mesclagem especificada.
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)
Parâmetros
- mergeOption
- MergeOption
Especifica como o objeto deve ser retornado se ele já existir no ObjectContext.
Exceções
A origem do EntityReference<TEntity> é null
.
-ou-
Uma consulta retornou mais de uma extremidade relacionada.
-ou-
Uma consulta retornou zero extremidades relacionadas e uma extremidade relacionada era esperada.
Comentários
Esse método é usado para carregar o objeto relacionado.
Quando carregado, o objeto relacionado é acessado da propriedade Value.
Para carregar explicitamente objetos relacionados, você deve chamar o método Load
no final relacionado retornado pela propriedade de navegação. Para uma relação um-para-muitos, chame o método Load em EntityCollection<TEntity>e, para uma relação um-para-um, chame o Load em EntityReference<TEntity>. Isso carrega os dados de objeto relacionados no contexto do objeto. Quando uma consulta retorna resultados, você pode enumerar por meio da coleção de objetos usando um loop de foreach
(For Each...Next
no Visual Basic) e chamar condicionalmente o método Load
nas propriedades EntityReference<TEntity> e EntityCollection<TEntity> para cada entidade nos resultados.
O método Load carrega objetos relacionados da fonte de dados se IsLoaded está ou não true
.
Nota
Quando você chama o método Load durante uma enumeração foreach
(C#) ou For Each
(Visual Basic), os Serviços de Objeto tentam abrir um novo leitor de dados. Essa operação falhará, a menos que você tenha habilitado vários conjuntos de resultados ativos especificando multipleactiveresultsets=true
na cadeia de conexão. Você também pode carregar o resultado da consulta em uma coleção de List<T>. Isso fecha o leitor de dados e permite que você enumere na coleção para carregar objetos referenciados.
Esse método chama o método RelatedEnd.ValidateLoad
interno antes de carregar o objeto relacionado, o que valida que uma chamada para Load tem as condições corretas. O método RelatedEnd.ValidateLoad
verifica se:
- Existe uma ObjectContext válida.
- A entidade não está em um estado Deleted.
- MergeOption para Load deve ser NoTracking se e somente se a entidade de origem foi NoTracking. Se a entidade de origem foi recuperada com qualquer outro MergeOption, o LoadMergeOption pode ser tudo menos NoTracking (por exemplo, a entidade pode ter sido carregada com OverwriteChanges e a opção Load pode ser AppendOnly).
- Se
mergeOption
for NoTracking, Load não será chamado em uma entidade já carregada e Load não será chamado em um RelatedEndnão vazio e não rastreado.
Quando o objeto relacionado já está carregado no ObjectContext, o método Load impõe a MergeOption especificada pelo parâmetro mergeOption
. Para obter mais informações, consulte Resolução de Identidade, Gerenciamento de Estado e Controle de Alterações.