DataLoadOptions Classe

Definição

Permite carregamento e filtragem imediatos dos dados relacionados.

public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
Herança
DataLoadOptions

Exemplos

Quando recuperares Customers da base de dados de amostras da Northwind, podes usar DataLoadOptions para especificar que Orders também deve ser recuperado. Pode até especificar qual subconjunto de Orders recuperar.

Observações

A DataLoadOptions classe permite o carregamento e filtragem imediatos dos dados relacionados.

Quando você consulta um objeto, na verdade recupera apenas o objeto solicitado. Os objetos relacionados não são buscados automaticamente ao mesmo tempo. Para mais informações, consulte Consultas entre relacionamentos.

A DataLoadOptions classe fornece dois métodos para conseguir o carregamento imediato de dados relacionados especificados. O LoadWith método permite o carregamento imediato de dados relacionados com o alvo principal. O AssociateWith método permite filtrar objetos relacionados.

Regras

Considere as seguintes regras relativas à DataLoadOptions utilização:

Ciclos de pega

LoadWith e AssociateWith as diretivas não devem criar ciclos. Os seguintes apresentam exemplos desses grafos:

  • Exemplo 1: Auto-recursivo

    • dlo.LoadWith<Employee>(e => e.Reports);
  • Exemplo 2: Back-pointers

    • dlo.LoadWith <Customer>(c => C.Orders);
    • dlo.LoadWith <Order>(o => o.Customer);
  • Exemplo 3: Ciclos mais longos

    Embora isto não deva ocorrer num modelo bem normalizado, é possível.

    • dlo.LoadWith <A>(a => a.Bs);
    • dlo.LoadWith <B>(b => b.Cs);
    • dlo.LoadWith <C>(c => c.As);
  • Exemplo 4: SubQueries auto-recursivas

    • dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
  • Exemplo 5: Subconsultas recursivas mais longas

    • dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));
    • dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));

As seguintes regras gerais ajudam-no a compreender o que acontece nestes cenários:

  • LoadWith: Cada chamada verifica LoadWith se foram introduzidos ciclos no grafo. Se houver, como nos Exemplos 1, 2 e 3, é lançada uma exceção.

  • AssociateWith: Em tempo de execução, o motor não aplica as cláusulas SubQuery existentes à relação dentro da expressão.

    • No Exemplo 4, a Where cláusula é executada contra todos A, não apenas contra os subfiltrados pela própria expressão SubQuery (porque isso seria recursivo).
    • No Exemplo 5, a primeira Where cláusula é aplicada a todos os Bs, mesmo que existam subconsultas em B. A segunda Where cláusula aplica-se a todos os As mesmo que existam subconsultas em A.

Construtores

Name Description
DataLoadOptions()

Inicializa uma nova instância da DataLoadOptions classe.

Métodos

Name Description
AssociateWith(LambdaExpression)

Filtra os objetos recuperados para uma relação particular.

AssociateWith<T>(Expression<Func<T,Object>>)

Filtra objetos recuperados para uma relação particular.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadWith(LambdaExpression)

Recupera dados especificados relacionados com o alvo principal utilizando uma expressão lambda.

LoadWith<T>(Expression<Func<T,Object>>)

Especifica quais subobjetos recuperar quando é submetida uma consulta para um objeto do tipo T.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a