DataLoadOptions Clase

Definición

Proporciona la carga inmediata y el filtrado de datos relacionados.

public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
Herencia
DataLoadOptions

Ejemplos

Al recuperar Customers de la base de datos de ejemplo Northwind, puede usar DataLoadOptions para especificar que Orders también se va a recuperar. Incluso puede especificar qué subconjunto de Orders se va a recuperar.

Comentarios

La DataLoadOptions clase proporciona la carga inmediata y el filtrado de datos relacionados.

Al consultar un objeto, en realidad solo se recupera el objeto que solicitó. Los objetos relacionados no se capturan automáticamente al mismo tiempo. Para obtener más información, consulte Realizar consultas en varias relaciones.

La DataLoadOptions clase proporciona dos métodos para lograr la carga inmediata de los datos relacionados especificados. El LoadWith método permite la carga inmediata de datos relacionados con el destino principal. El AssociateWith método permite filtrar objetos relacionados.

Reglas

Tenga en cuenta las siguientes reglas sobre el DataLoadOptions uso:

Controlar ciclos

LoadWith las directivas y AssociateWith no deben crear ciclos. A continuación se representan ejemplos de estos gráficos:

  • Ejemplo 1: Auto recursivo

    • dlo.LoadWith<Employee>(e => e.Reports);
  • Ejemplo 2: punteros atrás

    • dlo.LoadWith <Customer>(c => C.Orders);
    • dlo.LoadWith <Order>(o => o.Customer);
  • Ejemplo 3: Ciclos más largos

    Aunque esto no debe ocurrir en un modelo bien normalizado, es posible.

    • dlo.LoadWith <A>(a => a.Bs);
    • dlo.LoadWith <B>(b => b.Cs);
    • dlo.LoadWith <C>(c => c.As);
  • Ejemplo 4: Subconsultas recursivas

    • dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
  • Ejemplo 5: Subconsultas recursivas más largas

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

Las siguientes reglas generales le ayudarán a comprender lo que ocurre en estos escenarios:

  • LoadWith: cada llamada a LoadWith comprueba si se han introducido ciclos en el gráfico. Si hay, como en los ejemplos 1, 2 y 3, se produce una excepción.

  • AssociateWith: en tiempo de ejecución, el motor no aplica las cláusulas SubQuery existentes a la relación dentro de la expresión.

    • En el ejemplo 4, la Where cláusula se ejecuta en todo A, no solo las subfiltreadas por la propia expresión SubQuery (porque sería recursiva).
    • En el ejemplo 5, la primera Where cláusula se aplica a todos los Belementos , aunque hay subconsultas en B. La segunda Where cláusula se aplica a todos los Aelementos , aunque haya subconsultas en A.

Constructores

Nombre Description
DataLoadOptions()

Inicializa una nueva instancia de la clase DataLoadOptions.

Métodos

Nombre Description
AssociateWith(LambdaExpression)

Filtra los objetos recuperados para una relación determinada.

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

Filtra los objetos recuperados para una relación determinada.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
LoadWith(LambdaExpression)

Recupera los datos especificados relacionados con el destino principal mediante una expresión lambda.

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

Especifica los subobjetos que se van a recuperar cuando se envía una consulta para un objeto de tipo T.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a