DataLoadOptions.LoadWith Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
LoadWith(LambdaExpression) |
Получает указанные данные, связанные с основным целевым объектом с помощью лямбда-выражения. |
LoadWith<T>(Expression<Func<T,Object>>) |
Указывает, какие вложенные объекты следует получить при отправке запроса для объекта типа Т. |
LoadWith(LambdaExpression)
Получает указанные данные, связанные с основным целевым объектом с помощью лямбда-выражения.
public:
void LoadWith(System::Linq::Expressions::LambdaExpression ^ expression);
public void LoadWith (System.Linq.Expressions.LambdaExpression expression);
member this.LoadWith : System.Linq.Expressions.LambdaExpression -> unit
Public Sub LoadWith (expression As LambdaExpression)
Параметры
- expression
- LambdaExpression
Лямбда-выражение, определяющее связанный материал.
Примеры
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Customer>(c => c.Orders);
db.LoadOptions = dlo;
var londonCustomers =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (var custObj in londonCustomers)
{
Console.WriteLine(custObj.CustomerID);
}
Dim db As New Northwnd("c:\northwnd.mdf")
Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.LoadWith(Of Customer)(Function(c As Customer) c.Orders)
db.LoadOptions = dlo
Dim londonCustomers = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each custObj In londonCustomers
Console.WriteLine(custObj.CustomerID)
Next
Комментарии
В следующем примере при выполнении запроса извлекаются все заказы (Orders
) для всех клиентов (Customers
), расположенных в Лондоне. В результате, при последующем доступе к свойству Orders
объекта Customer
не инициируется новый запрос базы данных.
Применяется к
LoadWith<T>(Expression<Func<T,Object>>)
Указывает, какие вложенные объекты следует получить при отправке запроса для объекта типа Т.
public:
generic <typename T>
void LoadWith(System::Linq::Expressions::Expression<Func<T, System::Object ^> ^> ^ expression);
public void LoadWith<T> (System.Linq.Expressions.Expression<Func<T,object>> expression);
member this.LoadWith : System.Linq.Expressions.Expression<Func<'T, obj>> -> unit
Public Sub LoadWith(Of T) (expression As Expression(Of Func(Of T, Object)))
Параметры типа
- T
Запрашиваемый тип.
Если этот тип не сопоставляется, создается исключение.
Параметры
- expression
- Expression<Func<T,Object>>
Определяет поле или свойство для извлечения.
Если выражение не определяет поле или свойство, представляющие связь "один к одному" или "один ко многим", создается исключение.
Примеры
В следующем примере при выполнении запроса извлекаются все заказы (Orders
) для всех клиентов (Customers
), расположенных в Лондоне. В результате, при последующем доступе к свойству Orders
объекта Customer
не инициируется новый запрос базы данных.
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Customer>(c => c.Orders);
db.LoadOptions = dlo;
var londonCustomers =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (var custObj in londonCustomers)
{
Console.WriteLine(custObj.CustomerID);
}
Dim db As New Northwnd("c:\northwnd.mdf")
Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.LoadWith(Of Customer)(Function(c As Customer) c.Orders)
db.LoadOptions = dlo
Dim londonCustomers = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each custObj In londonCustomers
Console.WriteLine(custObj.CustomerID)
Next
Комментарии
Невозможно указать загрузку двух уровней связей (например, Orders.OrderDetails
). В этих сценариях необходимо указать два отдельных LoadWith метода.
Чтобы избежать циклов, см. раздел "Примечания" в DataLoadOptions.