Pergunta

Eu tenho um elemento ligado a uma entidade (Contato) que expõe algumas propriedades de navegação.

eu quero, que em alguma ação (ou seja, um "Carregar crianças" botão), o contato deve carregar para todos os seus filhos e netos como eu posso fazer com um ObjectQuery.Include antes da execução; exemplo (pseudo):

DirectCast(element.DataContext, Contact).SubContacts. _
   Include("Address.State"). _
   Load()

Eu quero ser capaz de moldar os resultados também recarregando itens como o exemplo acima, não apenas ao consultar o próprio modelo.

Eu acho que isso deveria ter sido uma parte da Entidade-Quadro de alguma forma.

Foi útil?

Solução

Eu não sou positivo que eu siga a pergunta, mas deixe-me ver:

Você quer ter uma entidade que já carregado, em seguida, carregar uma propriedade de navegação com incluir caminhos para essa propriedade. Esta não é realmente tão difícil, desde que você está usando o mesmo contexto que você usou para carregar o primeiro objeto.

O ponto importante é que sempre que você faz uma consulta que retorna uma entidade, Entity Framework vai ligá-lo automaticamente com qualquer um de seus objetos relacionados que você já tem. Então, o que você realmente quer é produzir uma nova consulta que retorna os dados extra, com alguns inclui.

Todas as referências feitas Entity Framework tem um método chamado CreateSourceQuery . Ele retorna um objeto de consulta, de modo que você pode usá-lo para fazer isso (desculpe, C #):

AlreadyLoadedContact.SubContacts.CreateSourceQuery().Include("Address.State").ToList();

A chamada ToList executa a consulta, e Entity Framework vai levar todos os resultados e adicioná-los automaticamente para você SubContacts EntityCollection.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top