DataLoadOptions Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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:
- Atribuir a DataLoadOptions a DataContext a após a primeira consulta ter sido executada gera uma exceção.
- Modificar a DataLoadOptions depois de ter sido atribuído a DataContext a gera uma exceçã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
Wherecláusula é executada contra todosA, não apenas contra os subfiltrados pela própria expressão SubQuery (porque isso seria recursivo). - No Exemplo 5, a primeira
Wherecláusula é aplicada a todos osBs, mesmo que existam subconsultas emB. A segundaWherecláusula aplica-se a todos osAs mesmo que existam subconsultas emA.
- No Exemplo 4, 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) |