DataLoadOptions Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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:
- La asignación de un DataLoadOptions objeto a una DataContext vez ejecutada la primera consulta genera una excepción.
- La modificación de una DataLoadOptions excepción después de asignarla a DataContext genera una excepción.
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
Wherecláusula se ejecuta en todoA, no solo las subfiltreadas por la propia expresión SubQuery (porque sería recursiva). - En el ejemplo 5, la primera
Wherecláusula se aplica a todos losBelementos , aunque hay subconsultas enB. La segundaWherecláusula se aplica a todos losAelementos , aunque haya subconsultas enA.
- En el ejemplo 4, la
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) |