DataServiceContext.LoadProperty 方法 (Object, String, Uri)
通过使用所提供的下一链接 URI 来加载相关实体页。
用于 Silverlight 的 WCF Data Services 5.0 客户端不支持。
命名空间: System.Data.Services.Client
程序集: Microsoft.Data.Services.Client(在 Microsoft.Data.Services.Client.dll 中)
语法
声明
Public Function LoadProperty ( _
entity As Object, _
propertyName As String, _
nextLinkUri As Uri _
) As QueryOperationResponse
用法
Dim instance As DataServiceContext
Dim entity As Object
Dim propertyName As String
Dim nextLinkUri As Uri
Dim returnValue As QueryOperationResponse
returnValue = instance.LoadProperty(entity, _
propertyName, nextLinkUri)
public QueryOperationResponse LoadProperty(
Object entity,
string propertyName,
Uri nextLinkUri
)
public:
QueryOperationResponse^ LoadProperty(
Object^ entity,
String^ propertyName,
Uri^ nextLinkUri
)
member LoadProperty :
entity:Object *
propertyName:string *
nextLinkUri:Uri -> QueryOperationResponse
public function LoadProperty(
entity : Object,
propertyName : String,
nextLinkUri : Uri
) : QueryOperationResponse
参数
- entity
类型:System.Object
包含要加载的属性的实体。
- propertyName
类型:System.String
要加载的指定实体的属性名称。
- nextLinkUri
类型:System.Uri
用于加载下一结果页的 URI。
返回值
类型:System.Data.Services.Client.QueryOperationResponse
包含请求结果的 QueryOperationResponse<T> 实例。
异常
异常 | 条件 |
---|---|
InvalidOperationException |
注释
当 entity 处于 Unchanged 或 Modified 状态时,在 Unchanged 状态下加载相关实体,并且也在 Unchanged 状态下创建各实体之间的链接。
当 entity 处于 Deleted 状态时,在 Unchanged 状态下加载相关实体,并在 Deleted 状态下创建各实体之间的链接。
示例
此示例随每个 Customers 实体一起返回相关的 Orders 实体,并使用 do?while 循环从数据服务加载 Customers 实体页以及使用嵌套的 while 循环从数据服务加载相关的 Orders 实体页。 LoadProperty 方法用于加载相关的 Orders 实体页。
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Dim nextLink As DataServiceQueryContinuation(Of Customer) = Nothing
Dim pageCount = 0
Dim innerPageCount = 0
Try
' Execute the query for all customers and related orders,
' and get the response object.
Dim response = _
CType(context.Customers.AddQueryOption("$expand", "Orders") _
.Execute(), QueryOperationResponse(Of Customer))
' With a paged response from the service, use a do...while loop
' to enumerate the results before getting the next link.
Do
' Write the page number.
Console.WriteLine("Customers Page {0}:", ++pageCount)
' If nextLink is not null, then there is a new page to load.
If nextLink IsNot Nothing Then
' Load the new page from the next link URI.
response = CType(context.Execute(Of Customer)(nextLink), _
QueryOperationResponse(Of Customer))
End If
' Enumerate the customers in the response.
For Each c As Customer In response
Console.WriteLine(vbTab & "Customer Name: {0}", c.CompanyName)
Console.WriteLine(vbTab & "Orders Page {0}:", innerPageCount + 1)
' Get the next link for the collection of related Orders.
Dim nextOrdersLink As DataServiceQueryContinuation(Of Order) = _
response.GetContinuation(c.Orders)
While nextOrdersLink IsNot Nothing
For Each o As Order In c.Orders
' Print out the orders.
Console.WriteLine(vbTab & vbTab & "OrderID: {0} - Freight: ${1}", _
o.OrderID, o.Freight)
Next
' Load the next page of Orders.
Dim ordersResponse = _
context.LoadProperty(c, "Orders", nextOrdersLink)
nextOrdersLink = ordersResponse.GetContinuation()
End While
Next
' Get the next link, and continue while there is a next link.
nextLink = response.GetContinuation()
Loop While nextLink IsNot Nothing
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
DataServiceQueryContinuation<Customer> nextLink = null;
int pageCount = 0;
int innerPageCount = 0;
try
{
// Execute the query for all customers and related orders,
// and get the response object.
var response =
context.Customers.AddQueryOption("$expand", "Orders")
.Execute() as QueryOperationResponse<Customer>;
// With a paged response from the service, use a do...while loop
// to enumerate the results before getting the next link.
do
{
// Write the page number.
Console.WriteLine("Customers Page {0}:", ++pageCount);
// If nextLink is not null, then there is a new page to load.
if (nextLink != null)
{
// Load the new page from the next link URI.
response = context.Execute<Customer>(nextLink)
as QueryOperationResponse<Customer>;
}
// Enumerate the customers in the response.
foreach (Customer c in response)
{
Console.WriteLine("\tCustomer Name: {0}", c.CompanyName);
Console.WriteLine("\tOrders Page {0}:", ++innerPageCount);
// Get the next link for the collection of related Orders.
DataServiceQueryContinuation<Order> nextOrdersLink =
response.GetContinuation(c.Orders);
while (nextOrdersLink != null)
{
foreach (Order o in c.Orders)
{
// Print out the orders.
Console.WriteLine("\t\tOrderID: {0} - Freight: ${1}",
o.OrderID, o.Freight);
}
// Load the next page of Orders.
var ordersResponse = context.LoadProperty(c, "Orders", nextOrdersLink);
nextOrdersLink = ordersResponse.GetContinuation();
}
}
}
// Get the next link, and continue while there is a next link.
while ((nextLink = response.GetContinuation()) != null);
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
请参阅
参考
System.Data.Services.Client 命名空间