DataLoadOptions.AssociateWith Método

Definição

Sobrecargas

AssociateWith(LambdaExpression)

Filtra os objetos recuperados para um relacionamento específico.Filters the objects retrieved for a particular relationship.

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

Filtra os objetos recuperados para um relacionamento específico.Filters objects retrieved for a particular relationship.

AssociateWith(LambdaExpression)

Filtra os objetos recuperados para um relacionamento específico.Filters the objects retrieved for a particular relationship.

public:
 void AssociateWith(System::Linq::Expressions::LambdaExpression ^ expression);
public void AssociateWith (System.Linq.Expressions.LambdaExpression expression);
member this.AssociateWith : System.Linq.Expressions.LambdaExpression -> unit
Public Sub AssociateWith (expression As LambdaExpression)

Parâmetros

expression
LambdaExpression

Identifica a consulta a ser usada em um determinado campo ou propriedade um-para-muitos.Identifies the query to be used on a particular one-to-many field or property. Observe o seguinte:Note the following:

Se a expressão não começar com um campo ou propriedade que representa uma relação um-para-muitos, uma exceção será gerada.If the expression does not start with a field or property that represents a one-to-many relationship, an exception is thrown.

Se aparecer um operador diferente de um operador válido na expressão, uma exceção será gerada.If an operator other than a valid operator appears in the expression, an exception is thrown. Os operadores válidos são os seguintes:Valid operators are as follows:

WhereWhere

OrderByOrderBy

ThenByThenBy

OrderByDescendingOrderByDescending

ThenByDescendingThenByDescending

TakeTake

Exemplos

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.AssociateWith<Customer>(c => c.Orders.Where(p => p.ShippedDate != DateTime.Today));
db.LoadOptions = dlo;
var custOrderQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

foreach (Customer custObj in custOrderQuery)
{
    Console.WriteLine(custObj.CustomerID);
    foreach (Order ord in custObj.Orders)
    {
        Console.WriteLine("\t {0}",ord.OrderDate);
    }
}
Dim db As New Northwnd("c:\northwnd.mdf")

Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.AssociateWith(Of Customer)(Function(c As Customer) _
        c.Orders.Where(Function(p) p.ShippedDate <> DateTime.Today))
db.LoadOptions = dlo

Dim custOrderQuery = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust

For Each custObj In custOrderQuery
    Console.WriteLine(custObj.CustomerID)
    For Each ord In custObj.Orders
        Console.WriteLine("{0}{1}", vbTab, ord.OrderDate)
    Next

Next

Comentários

No exemplo a seguir, o loop interno itera somente sobre aqueles Orders que não foram enviados hoje.In the following example, the inner loop iterates only over those Orders that have not been shipped today.

Aplica-se a

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

Filtra os objetos recuperados para um relacionamento específico.Filters objects retrieved for a particular relationship.

public:
generic <typename T>
 void AssociateWith(System::Linq::Expressions::Expression<Func<T, System::Object ^> ^> ^ expression);
public void AssociateWith<T> (System.Linq.Expressions.Expression<Func<T,object>> expression);
member this.AssociateWith : System.Linq.Expressions.Expression<Func<'T, obj>> -> unit
Public Sub AssociateWith(Of T) (expression As Expression(Of Func(Of T, Object)))

Parâmetros de tipo

T

O tipo é consultado.The type that is queried against.

Se o tipo não estiver mapeado, uma exceção será gerada.If the type is unmapped, an exception is thrown.

Parâmetros

expression
Expression<Func<T,Object>>

Identifica a consulta a ser usada em um determinado campo ou propriedade um-para-muitos.Identifies the query to be used on a particular one-to-many field or property. Observe o seguinte:Note the following:

Se a expressão não começar com um campo ou propriedade que representa uma relação um-para-muitos, uma exceção será gerada.If the expression does not start with a field or property that represents a one-to-many relationship, an exception is thrown.

Se aparecer um operador diferente de um operador válido na expressão, uma exceção será gerada.If an operator other than a valid operator appears in the expression, an exception is thrown. Os operadores válidos são os seguintes:Valid operators are as follows:

WhereWhere

OrderByOrderBy

ThenByThenBy

OrderByDescendingOrderByDescending

ThenByDescendingThenByDescending

TakeTake

Exemplos

No exemplo a seguir, o loop interno itera somente sobre aqueles Orders que não foram enviados hoje.In the following example, the inner loop iterates only over those Orders that have not been shipped today.

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.AssociateWith<Customer>(c => c.Orders.Where(p => p.ShippedDate != DateTime.Today));
db.LoadOptions = dlo;
var custOrderQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

foreach (Customer custObj in custOrderQuery)
{
    Console.WriteLine(custObj.CustomerID);
    foreach (Order ord in custObj.Orders)
    {
        Console.WriteLine("\t {0}",ord.OrderDate);
    }
}
Dim db As New Northwnd("c:\northwnd.mdf")

Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.AssociateWith(Of Customer)(Function(c As Customer) _
        c.Orders.Where(Function(p) p.ShippedDate <> DateTime.Today))
db.LoadOptions = dlo

Dim custOrderQuery = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust

For Each custObj In custOrderQuery
    Console.WriteLine(custObj.CustomerID)
    For Each ord In custObj.Orders
        Console.WriteLine("{0}{1}", vbTab, ord.OrderDate)
    Next

Next

Comentários

Para obter informações sobre como evitar ciclos, consulte DataLoadOptions .For information about how to avoid cycles, see DataLoadOptions.

Aplica-se a